1*4882a593Smuzhiyun // SPDX-License-Identifier: LGPL-2.1 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) 2009, 2010 Red Hat Inc, Steven Rostedt <srostedt@redhat.com> 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef _PARSE_EVENTS_INT_H 8*4882a593Smuzhiyun #define _PARSE_EVENTS_INT_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun struct tep_cmdline; 11*4882a593Smuzhiyun struct cmdline_list; 12*4882a593Smuzhiyun struct func_map; 13*4882a593Smuzhiyun struct func_list; 14*4882a593Smuzhiyun struct event_handler; 15*4882a593Smuzhiyun struct func_resolver; 16*4882a593Smuzhiyun struct tep_plugins_dir; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #define __hidden __attribute__((visibility ("hidden"))) 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct tep_handle { 21*4882a593Smuzhiyun int ref_count; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun int header_page_ts_offset; 24*4882a593Smuzhiyun int header_page_ts_size; 25*4882a593Smuzhiyun int header_page_size_offset; 26*4882a593Smuzhiyun int header_page_size_size; 27*4882a593Smuzhiyun int header_page_data_offset; 28*4882a593Smuzhiyun int header_page_data_size; 29*4882a593Smuzhiyun int header_page_overwrite; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun enum tep_endian file_bigendian; 32*4882a593Smuzhiyun enum tep_endian host_bigendian; 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun int old_format; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun int cpus; 37*4882a593Smuzhiyun int long_size; 38*4882a593Smuzhiyun int page_size; 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun struct tep_cmdline *cmdlines; 41*4882a593Smuzhiyun struct cmdline_list *cmdlist; 42*4882a593Smuzhiyun int cmdline_count; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun struct func_map *func_map; 45*4882a593Smuzhiyun struct func_resolver *func_resolver; 46*4882a593Smuzhiyun struct func_list *funclist; 47*4882a593Smuzhiyun unsigned int func_count; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun struct printk_map *printk_map; 50*4882a593Smuzhiyun struct printk_list *printklist; 51*4882a593Smuzhiyun unsigned int printk_count; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun struct tep_event **events; 54*4882a593Smuzhiyun int nr_events; 55*4882a593Smuzhiyun struct tep_event **sort_events; 56*4882a593Smuzhiyun enum tep_event_sort_type last_type; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun int type_offset; 59*4882a593Smuzhiyun int type_size; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun int pid_offset; 62*4882a593Smuzhiyun int pid_size; 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun int pc_offset; 65*4882a593Smuzhiyun int pc_size; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun int flags_offset; 68*4882a593Smuzhiyun int flags_size; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun int ld_offset; 71*4882a593Smuzhiyun int ld_size; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun int test_filters; 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun int flags; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun struct tep_format_field *bprint_ip_field; 78*4882a593Smuzhiyun struct tep_format_field *bprint_fmt_field; 79*4882a593Smuzhiyun struct tep_format_field *bprint_buf_field; 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun struct event_handler *handlers; 82*4882a593Smuzhiyun struct tep_function_handler *func_handlers; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun /* cache */ 85*4882a593Smuzhiyun struct tep_event *last_event; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun struct tep_plugins_dir *plugins_dir; 88*4882a593Smuzhiyun }; 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun enum tep_print_parse_type { 91*4882a593Smuzhiyun PRINT_FMT_STRING, 92*4882a593Smuzhiyun PRINT_FMT_ARG_DIGIT, 93*4882a593Smuzhiyun PRINT_FMT_ARG_POINTER, 94*4882a593Smuzhiyun PRINT_FMT_ARG_STRING, 95*4882a593Smuzhiyun }; 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun struct tep_print_parse { 98*4882a593Smuzhiyun struct tep_print_parse *next; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun char *format; 101*4882a593Smuzhiyun int ls; 102*4882a593Smuzhiyun enum tep_print_parse_type type; 103*4882a593Smuzhiyun struct tep_print_arg *arg; 104*4882a593Smuzhiyun struct tep_print_arg *len_as_arg; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun void free_tep_event(struct tep_event *event); 108*4882a593Smuzhiyun void free_tep_format_field(struct tep_format_field *field); 109*4882a593Smuzhiyun void free_tep_plugin_paths(struct tep_handle *tep); 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun unsigned short data2host2(struct tep_handle *tep, unsigned short data); 112*4882a593Smuzhiyun unsigned int data2host4(struct tep_handle *tep, unsigned int data); 113*4882a593Smuzhiyun unsigned long long data2host8(struct tep_handle *tep, unsigned long long data); 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun /* access to the internal parser */ 116*4882a593Smuzhiyun int peek_char(void); 117*4882a593Smuzhiyun void init_input_buf(const char *buf, unsigned long long size); 118*4882a593Smuzhiyun unsigned long long get_input_buf_ptr(void); 119*4882a593Smuzhiyun const char *get_input_buf(void); 120*4882a593Smuzhiyun enum tep_event_type read_token(char **tok); 121*4882a593Smuzhiyun void free_token(char *tok); 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun #endif /* _PARSE_EVENTS_INT_H */ 124