xref: /OK3568_Linux_fs/kernel/tools/lib/traceevent/event-parse-local.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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