Merge tag 'for-netdev' of https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf...
[platform/kernel/linux-starfive.git] / kernel / trace / trace_synth.h
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 */