xref: /linux/kernel/trace/trace_synth.h (revision 0e685c3e7158d35626d6d76b9f859eae806d87fa)
1 // SPDX-License-Identifier: GPL-2.0
2 #ifndef __TRACE_SYNTH_H
3 #define __TRACE_SYNTH_H
4 
5 #include "trace_dynevent.h"
6 
7 #define SYNTH_SYSTEM		"synthetic"
8 #define SYNTH_FIELDS_MAX	64
9 
10 #define STR_VAR_LEN_MAX		MAX_FILTER_STR_VAL /* must be multiple of sizeof(u64) */
11 
12 struct synth_field {
13 	char *type;
14 	char *name;
15 	size_t size;
16 	unsigned int offset;
17 	unsigned int field_pos;
18 	bool is_signed;
19 	bool is_string;
20 	bool is_dynamic;
21 	bool is_stack;
22 };
23 
24 struct synth_event {
25 	struct dyn_event			devent;
26 	int					ref;
27 	char					*name;
28 	struct synth_field			**fields;
29 	unsigned int				n_fields;
30 	struct synth_field			**dynamic_fields;
31 	unsigned int				n_dynamic_fields;
32 	unsigned int				n_u64;
33 	struct trace_event_class		class;
34 	struct trace_event_call			call;
35 	struct tracepoint			*tp;
36 	struct module				*mod;
37 };
38 
39 extern struct synth_event *find_synth_event(const char *name);
40 
41 #endif /* __TRACE_SYNTH_H */
42