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 };
22 
23 struct synth_event {
24 	struct dyn_event			devent;
25 	int					ref;
26 	char					*name;
27 	struct synth_field			**fields;
28 	unsigned int				n_fields;
29 	struct synth_field			**dynamic_fields;
30 	unsigned int				n_dynamic_fields;
31 	unsigned int				n_u64;
32 	struct trace_event_class		class;
33 	struct trace_event_call			call;
34 	struct tracepoint			*tp;
35 	struct module				*mod;
36 };
37 
38 extern struct synth_event *find_synth_event(const char *name);
39 
40 #endif /* __TRACE_SYNTH_H */
41