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