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
10TRACE_EVENT(percpu_alloc_percpu,
11
12	TP_PROTO(bool reserved, bool is_atomic, size_t size,
13		 size_t align, void *base_addr, int off, void __percpu *ptr),
14
15	TP_ARGS(reserved, is_atomic, size, align, base_addr, off, ptr),
16
17	TP_STRUCT__entry(
18		__field(	bool,			reserved	)
19		__field(	bool,			is_atomic	)
20		__field(	size_t,			size		)
21		__field(	size_t,			align		)
22		__field(	void *,			base_addr	)
23		__field(	int,			off		)
24		__field(	void __percpu *,	ptr		)
25	),
26
27	TP_fast_assign(
28		__entry->reserved	= reserved;
29		__entry->is_atomic	= is_atomic;
30		__entry->size		= size;
31		__entry->align		= align;
32		__entry->base_addr	= base_addr;
33		__entry->off		= off;
34		__entry->ptr		= ptr;
35	),
36
37	TP_printk("reserved=%d is_atomic=%d size=%zu align=%zu base_addr=%p off=%d ptr=%p",
38		  __entry->reserved, __entry->is_atomic,
39		  __entry->size, __entry->align,
40		  __entry->base_addr, __entry->off, __entry->ptr)
41);
42
43TRACE_EVENT(percpu_free_percpu,
44
45	TP_PROTO(void *base_addr, int off, void __percpu *ptr),
46
47	TP_ARGS(base_addr, off, ptr),
48
49	TP_STRUCT__entry(
50		__field(	void *,			base_addr	)
51		__field(	int,			off		)
52		__field(	void __percpu *,	ptr		)
53	),
54
55	TP_fast_assign(
56		__entry->base_addr	= base_addr;
57		__entry->off		= off;
58		__entry->ptr		= ptr;
59	),
60
61	TP_printk("base_addr=%p off=%d ptr=%p",
62		__entry->base_addr, __entry->off, __entry->ptr)
63);
64
65TRACE_EVENT(percpu_alloc_percpu_fail,
66
67	TP_PROTO(bool reserved, bool is_atomic, size_t size, size_t align),
68
69	TP_ARGS(reserved, is_atomic, size, align),
70
71	TP_STRUCT__entry(
72		__field(	bool,	reserved	)
73		__field(	bool,	is_atomic	)
74		__field(	size_t,	size		)
75		__field(	size_t, align		)
76	),
77
78	TP_fast_assign(
79		__entry->reserved	= reserved;
80		__entry->is_atomic	= is_atomic;
81		__entry->size		= size;
82		__entry->align		= align;
83	),
84
85	TP_printk("reserved=%d is_atomic=%d size=%zu align=%zu",
86		  __entry->reserved, __entry->is_atomic,
87		  __entry->size, __entry->align)
88);
89
90TRACE_EVENT(percpu_create_chunk,
91
92	TP_PROTO(void *base_addr),
93
94	TP_ARGS(base_addr),
95
96	TP_STRUCT__entry(
97		__field(	void *, base_addr	)
98	),
99
100	TP_fast_assign(
101		__entry->base_addr	= base_addr;
102	),
103
104	TP_printk("base_addr=%p", __entry->base_addr)
105);
106
107TRACE_EVENT(percpu_destroy_chunk,
108
109	TP_PROTO(void *base_addr),
110
111	TP_ARGS(base_addr),
112
113	TP_STRUCT__entry(
114		__field(	void *,	base_addr	)
115	),
116
117	TP_fast_assign(
118		__entry->base_addr	= base_addr;
119	),
120
121	TP_printk("base_addr=%p", __entry->base_addr)
122);
123
124#endif /* _TRACE_PERCPU_H */
125
126#include <trace/define_trace.h>
127