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 10struct tep_cmdline; 11struct cmdline_list; 12struct func_map; 13struct func_list; 14struct event_handler; 15struct func_resolver; 16struct tep_plugins_dir; 17 18#define __hidden __attribute__((visibility ("hidden"))) 19 20struct 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 90enum tep_print_parse_type { 91 PRINT_FMT_STRING, 92 PRINT_FMT_ARG_DIGIT, 93 PRINT_FMT_ARG_POINTER, 94 PRINT_FMT_ARG_STRING, 95}; 96 97struct tep_print_parse { 98 struct tep_print_parse *next; 99 100 char *format; 101 int ls; 102 enum tep_print_parse_type type; 103 struct tep_print_arg *arg; 104 struct tep_print_arg *len_as_arg; 105}; 106 107void free_tep_event(struct tep_event *event); 108void free_tep_format_field(struct tep_format_field *field); 109void free_tep_plugin_paths(struct tep_handle *tep); 110 111unsigned short data2host2(struct tep_handle *tep, unsigned short data); 112unsigned int data2host4(struct tep_handle *tep, unsigned int data); 113unsigned long long data2host8(struct tep_handle *tep, unsigned long long data); 114 115/* access to the internal parser */ 116int peek_char(void); 117void init_input_buf(const char *buf, unsigned long long size); 118unsigned long long get_input_buf_ptr(void); 119const char *get_input_buf(void); 120enum tep_event_type read_token(char **tok); 121void free_token(char *tok); 122 123#endif /* _PARSE_EVENTS_INT_H */ 124