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
12struct 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
24struct 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
39extern struct synth_event *find_synth_event(const char *name);
40
41#endif /* __TRACE_SYNTH_H */
42