1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef TRACEPOINT_DEFS_H
3 #define TRACEPOINT_DEFS_H 1
4 
5 /*
6  * File can be included directly by headers who only want to access
7  * tracepoint->key to guard out of line trace calls, or the definition of
8  * trace_print_flags{_u64}. Otherwise linux/tracepoint.h should be used.
9  */
10 
11 #include <linux/atomic.h>
12 #include <linux/static_key.h>
13 
14 struct trace_print_flags {
15 	unsigned long		mask;
16 	const char		*name;
17 };
18 
19 struct trace_print_flags_u64 {
20 	unsigned long long	mask;
21 	const char		*name;
22 };
23 
24 struct tracepoint_func {
25 	void *func;
26 	void *data;
27 	int prio;
28 };
29 
30 struct tracepoint {
31 	const char *name;		/* Tracepoint name */
32 	struct static_key key;
33 	int (*regfunc)(void);
34 	void (*unregfunc)(void);
35 	struct tracepoint_func __rcu *funcs;
36 };
37 
38 #ifdef CONFIG_HAVE_ARCH_PREL32_RELOCATIONS
39 typedef const int tracepoint_ptr_t;
40 #else
41 typedef struct tracepoint * const tracepoint_ptr_t;
42 #endif
43 
44 struct bpf_raw_event_map {
45 	struct tracepoint	*tp;
46 	void			*bpf_func;
47 	u32			num_args;
48 	u32			writable_size;
49 } __aligned(32);
50 
51 #endif
52