xref: /openbmc/linux/kernel/trace/trace_synth.h (revision e7bae9bb)
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	32
9 
10 #define STR_VAR_LEN_MAX		32 /* 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 	bool is_signed;
18 	bool is_string;
19 };
20 
21 struct synth_event {
22 	struct dyn_event			devent;
23 	int					ref;
24 	char					*name;
25 	struct synth_field			**fields;
26 	unsigned int				n_fields;
27 	unsigned int				n_u64;
28 	struct trace_event_class		class;
29 	struct trace_event_call			call;
30 	struct tracepoint			*tp;
31 	struct module				*mod;
32 };
33 
34 extern struct synth_event *find_synth_event(const char *name);
35 
36 #endif /* __TRACE_SYNTH_H */
37