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