blob: fd4bbcfbb849332b1945b4ca0bd76fc40406527a [file] [log] [blame]
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -04001// 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
Tzvetomir Stoyanov2e4318a2018-11-30 23:08:09 -050010struct tep_cmdline;
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -040011struct cmdline_list;
12struct func_map;
13struct func_list;
14struct event_handler;
15struct func_resolver;
Tzvetomir Stoyanov (VMware)4d70cae2020-07-02 14:53:49 -040016struct tep_plugins_dir;
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -040017
Tzvetomir Stoyanov (VMware)a41c3212020-09-30 14:07:33 +030018#define __hidden __attribute__((visibility ("hidden")))
19
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -040020struct 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
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -040034 int old_format;
35
36 int cpus;
37 int long_size;
38 int page_size;
39
Tzvetomir Stoyanov2e4318a2018-11-30 23:08:09 -050040 struct tep_cmdline *cmdlines;
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -040041 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
Tzvetomir Stoyanov97fbf3f2018-11-30 10:44:07 -050053 struct tep_event **events;
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -040054 int nr_events;
Tzvetomir Stoyanov97fbf3f2018-11-30 10:44:07 -050055 struct tep_event **sort_events;
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -040056 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
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -040073 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 */
Tzvetomir Stoyanov97fbf3f2018-11-30 10:44:07 -050085 struct tep_event *last_event;
Tzvetomir Stoyanov (VMware)4d70cae2020-07-02 14:53:49 -040086
87 struct tep_plugins_dir *plugins_dir;
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -040088};
89
Tzvetomir Stoyanov (VMware)e7a90882020-07-02 14:53:51 -040090enum tep_print_parse_type {
Tzvetomir Stoyanov (VMware)602e29f2020-07-21 21:16:49 -040091 PRINT_FMT_STRING,
Tzvetomir Stoyanov (VMware)e7a90882020-07-02 14:53:51 -040092 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
Tzvetomir Stoyanov (VMware)a41c3212020-09-30 14:07:33 +0300107void 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);
Tzvetomir Stoyanov6cd99d22018-11-30 10:44:10 -0500110
Tzvetomir Stoyanov (VMware)a41c3212020-09-30 14:07:33 +0300111unsigned 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);
Tzvetomir Stoyanov6cd99d22018-11-30 10:44:10 -0500122
Tzvetomir Stoyanovbb3dd7e2018-10-05 12:22:25 -0400123#endif /* _PARSE_EVENTS_INT_H */