1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #undef TRACE_SYSTEM |
3 | #define TRACE_SYSTEM percpu |
4 | |
5 | #if !defined(_TRACE_PERCPU_H) || defined(TRACE_HEADER_MULTI_READ) |
6 | #define _TRACE_PERCPU_H |
7 | |
8 | #include <linux/tracepoint.h> |
9 | #include <trace/events/mmflags.h> |
10 | |
11 | TRACE_EVENT(percpu_alloc_percpu, |
12 | |
13 | TP_PROTO(unsigned long call_site, |
14 | bool reserved, bool is_atomic, size_t size, |
15 | size_t align, void *base_addr, int off, |
16 | void __percpu *ptr, size_t bytes_alloc, gfp_t gfp_flags), |
17 | |
18 | TP_ARGS(call_site, reserved, is_atomic, size, align, base_addr, off, |
19 | ptr, bytes_alloc, gfp_flags), |
20 | |
21 | TP_STRUCT__entry( |
22 | __field( unsigned long, call_site ) |
23 | __field( bool, reserved ) |
24 | __field( bool, is_atomic ) |
25 | __field( size_t, size ) |
26 | __field( size_t, align ) |
27 | __field( void *, base_addr ) |
28 | __field( int, off ) |
29 | __field( void __percpu *, ptr ) |
30 | __field( size_t, bytes_alloc ) |
31 | __field( unsigned long, gfp_flags ) |
32 | ), |
33 | TP_fast_assign( |
34 | __entry->call_site = call_site; |
35 | __entry->reserved = reserved; |
36 | __entry->is_atomic = is_atomic; |
37 | __entry->size = size; |
38 | __entry->align = align; |
39 | __entry->base_addr = base_addr; |
40 | __entry->off = off; |
41 | __entry->ptr = ptr; |
42 | __entry->bytes_alloc = bytes_alloc; |
43 | __entry->gfp_flags = (__force unsigned long)gfp_flags; |
44 | ), |
45 | |
46 | TP_printk("call_site=%pS reserved=%d is_atomic=%d size=%zu align=%zu base_addr=%p off=%d ptr=%p bytes_alloc=%zu gfp_flags=%s" , |
47 | (void *)__entry->call_site, |
48 | __entry->reserved, __entry->is_atomic, |
49 | __entry->size, __entry->align, |
50 | __entry->base_addr, __entry->off, __entry->ptr, |
51 | __entry->bytes_alloc, show_gfp_flags(__entry->gfp_flags)) |
52 | ); |
53 | |
54 | TRACE_EVENT(percpu_free_percpu, |
55 | |
56 | TP_PROTO(void *base_addr, int off, void __percpu *ptr), |
57 | |
58 | TP_ARGS(base_addr, off, ptr), |
59 | |
60 | TP_STRUCT__entry( |
61 | __field( void *, base_addr ) |
62 | __field( int, off ) |
63 | __field( void __percpu *, ptr ) |
64 | ), |
65 | |
66 | TP_fast_assign( |
67 | __entry->base_addr = base_addr; |
68 | __entry->off = off; |
69 | __entry->ptr = ptr; |
70 | ), |
71 | |
72 | TP_printk("base_addr=%p off=%d ptr=%p" , |
73 | __entry->base_addr, __entry->off, __entry->ptr) |
74 | ); |
75 | |
76 | TRACE_EVENT(percpu_alloc_percpu_fail, |
77 | |
78 | TP_PROTO(bool reserved, bool is_atomic, size_t size, size_t align), |
79 | |
80 | TP_ARGS(reserved, is_atomic, size, align), |
81 | |
82 | TP_STRUCT__entry( |
83 | __field( bool, reserved ) |
84 | __field( bool, is_atomic ) |
85 | __field( size_t, size ) |
86 | __field( size_t, align ) |
87 | ), |
88 | |
89 | TP_fast_assign( |
90 | __entry->reserved = reserved; |
91 | __entry->is_atomic = is_atomic; |
92 | __entry->size = size; |
93 | __entry->align = align; |
94 | ), |
95 | |
96 | TP_printk("reserved=%d is_atomic=%d size=%zu align=%zu" , |
97 | __entry->reserved, __entry->is_atomic, |
98 | __entry->size, __entry->align) |
99 | ); |
100 | |
101 | TRACE_EVENT(percpu_create_chunk, |
102 | |
103 | TP_PROTO(void *base_addr), |
104 | |
105 | TP_ARGS(base_addr), |
106 | |
107 | TP_STRUCT__entry( |
108 | __field( void *, base_addr ) |
109 | ), |
110 | |
111 | TP_fast_assign( |
112 | __entry->base_addr = base_addr; |
113 | ), |
114 | |
115 | TP_printk("base_addr=%p" , __entry->base_addr) |
116 | ); |
117 | |
118 | TRACE_EVENT(percpu_destroy_chunk, |
119 | |
120 | TP_PROTO(void *base_addr), |
121 | |
122 | TP_ARGS(base_addr), |
123 | |
124 | TP_STRUCT__entry( |
125 | __field( void *, base_addr ) |
126 | ), |
127 | |
128 | TP_fast_assign( |
129 | __entry->base_addr = base_addr; |
130 | ), |
131 | |
132 | TP_printk("base_addr=%p" , __entry->base_addr) |
133 | ); |
134 | |
135 | #endif /* _TRACE_PERCPU_H */ |
136 | |
137 | #include <trace/define_trace.h> |
138 | |