• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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