xref: /linux-6.15/kernel/trace/trace_synth.h (revision 00cf3d67)
1726721a5STom Zanussi // SPDX-License-Identifier: GPL-2.0
2726721a5STom Zanussi #ifndef __TRACE_SYNTH_H
3726721a5STom Zanussi #define __TRACE_SYNTH_H
4726721a5STom Zanussi 
5726721a5STom Zanussi #include "trace_dynevent.h"
6726721a5STom Zanussi 
7726721a5STom Zanussi #define SYNTH_SYSTEM		"synthetic"
80be083ceSArtem Bityutskiy #define SYNTH_FIELDS_MAX	64
9726721a5STom Zanussi 
104a4a56b4STom Zanussi #define STR_VAR_LEN_MAX		MAX_FILTER_STR_VAL /* must be multiple of sizeof(u64) */
11726721a5STom Zanussi 
12726721a5STom Zanussi struct synth_field {
13726721a5STom Zanussi 	char *type;
14726721a5STom Zanussi 	char *name;
15726721a5STom Zanussi 	size_t size;
16726721a5STom Zanussi 	unsigned int offset;
173b13911aSSteven Rostedt (VMware) 	unsigned int field_pos;
18726721a5STom Zanussi 	bool is_signed;
19726721a5STom Zanussi 	bool is_string;
20bd82631dSTom Zanussi 	bool is_dynamic;
21*00cf3d67SSteven Rostedt (Google) 	bool is_stack;
22726721a5STom Zanussi };
23726721a5STom Zanussi 
24726721a5STom Zanussi struct synth_event {
25726721a5STom Zanussi 	struct dyn_event			devent;
26726721a5STom Zanussi 	int					ref;
27726721a5STom Zanussi 	char					*name;
28726721a5STom Zanussi 	struct synth_field			**fields;
29726721a5STom Zanussi 	unsigned int				n_fields;
30bd82631dSTom Zanussi 	struct synth_field			**dynamic_fields;
31bd82631dSTom Zanussi 	unsigned int				n_dynamic_fields;
32726721a5STom Zanussi 	unsigned int				n_u64;
33726721a5STom Zanussi 	struct trace_event_class		class;
34726721a5STom Zanussi 	struct trace_event_call			call;
35726721a5STom Zanussi 	struct tracepoint			*tp;
36726721a5STom Zanussi 	struct module				*mod;
37726721a5STom Zanussi };
38726721a5STom Zanussi 
39726721a5STom Zanussi extern struct synth_event *find_synth_event(const char *name);
40726721a5STom Zanussi 
41726721a5STom Zanussi #endif /* __TRACE_SYNTH_H */
42