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