|  | // SPDX-License-Identifier: GPL-2.0 | 
|  | #ifndef __TRACE_SYNTH_H | 
|  | #define __TRACE_SYNTH_H | 
|  |  | 
|  | #include "trace_dynevent.h" | 
|  |  | 
|  | #define SYNTH_SYSTEM		"synthetic" | 
|  | #define SYNTH_FIELDS_MAX	32 | 
|  |  | 
|  | #define STR_VAR_LEN_MAX		MAX_FILTER_STR_VAL /* must be multiple of sizeof(u64) */ | 
|  |  | 
|  | struct synth_field { | 
|  | char *type; | 
|  | char *name; | 
|  | size_t size; | 
|  | unsigned int offset; | 
|  | unsigned int field_pos; | 
|  | bool is_signed; | 
|  | bool is_string; | 
|  | bool is_dynamic; | 
|  | }; | 
|  |  | 
|  | struct synth_event { | 
|  | struct dyn_event			devent; | 
|  | int					ref; | 
|  | char					*name; | 
|  | struct synth_field			**fields; | 
|  | unsigned int				n_fields; | 
|  | struct synth_field			**dynamic_fields; | 
|  | unsigned int				n_dynamic_fields; | 
|  | unsigned int				n_u64; | 
|  | struct trace_event_class		class; | 
|  | struct trace_event_call			call; | 
|  | struct tracepoint			*tp; | 
|  | struct module				*mod; | 
|  | }; | 
|  |  | 
|  | extern struct synth_event *find_synth_event(const char *name); | 
|  |  | 
|  | #endif /* __TRACE_SYNTH_H */ |