Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
ed1777de TH |
2 | #undef TRACE_SYSTEM |
3 | #define TRACE_SYSTEM cgroup | |
4 | ||
5 | #if !defined(_TRACE_CGROUP_H) || defined(TRACE_HEADER_MULTI_READ) | |
6 | #define _TRACE_CGROUP_H | |
7 | ||
8 | #include <linux/cgroup.h> | |
9 | #include <linux/tracepoint.h> | |
10 | ||
11 | DECLARE_EVENT_CLASS(cgroup_root, | |
12 | ||
13 | TP_PROTO(struct cgroup_root *root), | |
14 | ||
15 | TP_ARGS(root), | |
16 | ||
17 | TP_STRUCT__entry( | |
18 | __field( int, root ) | |
19 | __field( u16, ss_mask ) | |
20 | __string( name, root->name ) | |
21 | ), | |
22 | ||
23 | TP_fast_assign( | |
24 | __entry->root = root->hierarchy_id; | |
25 | __entry->ss_mask = root->subsys_mask; | |
2c92ca84 | 26 | __assign_str(name); |
ed1777de TH |
27 | ), |
28 | ||
29 | TP_printk("root=%d ss_mask=%#x name=%s", | |
30 | __entry->root, __entry->ss_mask, __get_str(name)) | |
31 | ); | |
32 | ||
33 | DEFINE_EVENT(cgroup_root, cgroup_setup_root, | |
34 | ||
35 | TP_PROTO(struct cgroup_root *root), | |
36 | ||
37 | TP_ARGS(root) | |
38 | ); | |
39 | ||
40 | DEFINE_EVENT(cgroup_root, cgroup_destroy_root, | |
41 | ||
42 | TP_PROTO(struct cgroup_root *root), | |
43 | ||
44 | TP_ARGS(root) | |
45 | ); | |
46 | ||
47 | DEFINE_EVENT(cgroup_root, cgroup_remount, | |
48 | ||
49 | TP_PROTO(struct cgroup_root *root), | |
50 | ||
51 | TP_ARGS(root) | |
52 | ); | |
53 | ||
54 | DECLARE_EVENT_CLASS(cgroup, | |
55 | ||
e4f8d81c | 56 | TP_PROTO(struct cgroup *cgrp, const char *path), |
ed1777de | 57 | |
e4f8d81c | 58 | TP_ARGS(cgrp, path), |
ed1777de TH |
59 | |
60 | TP_STRUCT__entry( | |
61 | __field( int, root ) | |
ed1777de | 62 | __field( int, level ) |
e14da771 | 63 | __field( u64, id ) |
e4f8d81c | 64 | __string( path, path ) |
ed1777de TH |
65 | ), |
66 | ||
67 | TP_fast_assign( | |
68 | __entry->root = cgrp->root->hierarchy_id; | |
74321038 | 69 | __entry->id = cgroup_id(cgrp); |
ed1777de | 70 | __entry->level = cgrp->level; |
2c92ca84 | 71 | __assign_str(path); |
ed1777de TH |
72 | ), |
73 | ||
e14da771 | 74 | TP_printk("root=%d id=%llu level=%d path=%s", |
ed1777de TH |
75 | __entry->root, __entry->id, __entry->level, __get_str(path)) |
76 | ); | |
77 | ||
78 | DEFINE_EVENT(cgroup, cgroup_mkdir, | |
79 | ||
e4f8d81c | 80 | TP_PROTO(struct cgroup *cgrp, const char *path), |
ed1777de | 81 | |
e4f8d81c | 82 | TP_ARGS(cgrp, path) |
ed1777de TH |
83 | ); |
84 | ||
85 | DEFINE_EVENT(cgroup, cgroup_rmdir, | |
86 | ||
e4f8d81c | 87 | TP_PROTO(struct cgroup *cgrp, const char *path), |
ed1777de | 88 | |
e4f8d81c | 89 | TP_ARGS(cgrp, path) |
ed1777de TH |
90 | ); |
91 | ||
92 | DEFINE_EVENT(cgroup, cgroup_release, | |
93 | ||
e4f8d81c | 94 | TP_PROTO(struct cgroup *cgrp, const char *path), |
ed1777de | 95 | |
e4f8d81c | 96 | TP_ARGS(cgrp, path) |
ed1777de TH |
97 | ); |
98 | ||
99 | DEFINE_EVENT(cgroup, cgroup_rename, | |
100 | ||
e4f8d81c | 101 | TP_PROTO(struct cgroup *cgrp, const char *path), |
ed1777de | 102 | |
e4f8d81c | 103 | TP_ARGS(cgrp, path) |
ed1777de TH |
104 | ); |
105 | ||
4c476d8c RG |
106 | DEFINE_EVENT(cgroup, cgroup_freeze, |
107 | ||
108 | TP_PROTO(struct cgroup *cgrp, const char *path), | |
109 | ||
110 | TP_ARGS(cgrp, path) | |
111 | ); | |
112 | ||
113 | DEFINE_EVENT(cgroup, cgroup_unfreeze, | |
114 | ||
115 | TP_PROTO(struct cgroup *cgrp, const char *path), | |
116 | ||
117 | TP_ARGS(cgrp, path) | |
118 | ); | |
119 | ||
ed1777de TH |
120 | DECLARE_EVENT_CLASS(cgroup_migrate, |
121 | ||
e4f8d81c SRV |
122 | TP_PROTO(struct cgroup *dst_cgrp, const char *path, |
123 | struct task_struct *task, bool threadgroup), | |
ed1777de | 124 | |
e4f8d81c | 125 | TP_ARGS(dst_cgrp, path, task, threadgroup), |
ed1777de TH |
126 | |
127 | TP_STRUCT__entry( | |
128 | __field( int, dst_root ) | |
ed1777de | 129 | __field( int, dst_level ) |
e14da771 | 130 | __field( u64, dst_id ) |
ed1777de | 131 | __field( int, pid ) |
e4f8d81c | 132 | __string( dst_path, path ) |
ed1777de TH |
133 | __string( comm, task->comm ) |
134 | ), | |
135 | ||
136 | TP_fast_assign( | |
137 | __entry->dst_root = dst_cgrp->root->hierarchy_id; | |
74321038 | 138 | __entry->dst_id = cgroup_id(dst_cgrp); |
ed1777de | 139 | __entry->dst_level = dst_cgrp->level; |
2c92ca84 | 140 | __assign_str(dst_path); |
ed1777de | 141 | __entry->pid = task->pid; |
2c92ca84 | 142 | __assign_str(comm); |
ed1777de TH |
143 | ), |
144 | ||
e14da771 | 145 | TP_printk("dst_root=%d dst_id=%llu dst_level=%d dst_path=%s pid=%d comm=%s", |
ed1777de TH |
146 | __entry->dst_root, __entry->dst_id, __entry->dst_level, |
147 | __get_str(dst_path), __entry->pid, __get_str(comm)) | |
148 | ); | |
149 | ||
150 | DEFINE_EVENT(cgroup_migrate, cgroup_attach_task, | |
151 | ||
e4f8d81c SRV |
152 | TP_PROTO(struct cgroup *dst_cgrp, const char *path, |
153 | struct task_struct *task, bool threadgroup), | |
ed1777de | 154 | |
e4f8d81c | 155 | TP_ARGS(dst_cgrp, path, task, threadgroup) |
ed1777de TH |
156 | ); |
157 | ||
158 | DEFINE_EVENT(cgroup_migrate, cgroup_transfer_tasks, | |
159 | ||
e4f8d81c SRV |
160 | TP_PROTO(struct cgroup *dst_cgrp, const char *path, |
161 | struct task_struct *task, bool threadgroup), | |
ed1777de | 162 | |
e4f8d81c | 163 | TP_ARGS(dst_cgrp, path, task, threadgroup) |
ed1777de TH |
164 | ); |
165 | ||
4c476d8c RG |
166 | DECLARE_EVENT_CLASS(cgroup_event, |
167 | ||
168 | TP_PROTO(struct cgroup *cgrp, const char *path, int val), | |
169 | ||
170 | TP_ARGS(cgrp, path, val), | |
171 | ||
172 | TP_STRUCT__entry( | |
173 | __field( int, root ) | |
4c476d8c | 174 | __field( int, level ) |
e14da771 | 175 | __field( u64, id ) |
4c476d8c RG |
176 | __string( path, path ) |
177 | __field( int, val ) | |
178 | ), | |
179 | ||
180 | TP_fast_assign( | |
181 | __entry->root = cgrp->root->hierarchy_id; | |
74321038 | 182 | __entry->id = cgroup_id(cgrp); |
4c476d8c | 183 | __entry->level = cgrp->level; |
2c92ca84 | 184 | __assign_str(path); |
4c476d8c RG |
185 | __entry->val = val; |
186 | ), | |
187 | ||
e14da771 | 188 | TP_printk("root=%d id=%llu level=%d path=%s val=%d", |
4c476d8c RG |
189 | __entry->root, __entry->id, __entry->level, __get_str(path), |
190 | __entry->val) | |
191 | ); | |
192 | ||
193 | DEFINE_EVENT(cgroup_event, cgroup_notify_populated, | |
194 | ||
195 | TP_PROTO(struct cgroup *cgrp, const char *path, int val), | |
196 | ||
197 | TP_ARGS(cgrp, path, val) | |
198 | ); | |
199 | ||
200 | DEFINE_EVENT(cgroup_event, cgroup_notify_frozen, | |
201 | ||
202 | TP_PROTO(struct cgroup *cgrp, const char *path, int val), | |
203 | ||
204 | TP_ARGS(cgrp, path, val) | |
205 | ); | |
206 | ||
fc29e04a JDB |
207 | DECLARE_EVENT_CLASS(cgroup_rstat, |
208 | ||
21c38a3b | 209 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), |
fc29e04a | 210 | |
21c38a3b | 211 | TP_ARGS(cgrp, cpu, contended), |
fc29e04a JDB |
212 | |
213 | TP_STRUCT__entry( | |
214 | __field( int, root ) | |
215 | __field( int, level ) | |
216 | __field( u64, id ) | |
21c38a3b | 217 | __field( int, cpu ) |
fc29e04a JDB |
218 | __field( bool, contended ) |
219 | ), | |
220 | ||
221 | TP_fast_assign( | |
222 | __entry->root = cgrp->root->hierarchy_id; | |
223 | __entry->id = cgroup_id(cgrp); | |
224 | __entry->level = cgrp->level; | |
21c38a3b | 225 | __entry->cpu = cpu; |
fc29e04a JDB |
226 | __entry->contended = contended; |
227 | ), | |
228 | ||
21c38a3b | 229 | TP_printk("root=%d id=%llu level=%d cpu=%d lock contended:%d", |
fc29e04a | 230 | __entry->root, __entry->id, __entry->level, |
21c38a3b | 231 | __entry->cpu, __entry->contended) |
fc29e04a JDB |
232 | ); |
233 | ||
21c38a3b | 234 | /* Related to global: cgroup_rstat_lock */ |
fc29e04a JDB |
235 | DEFINE_EVENT(cgroup_rstat, cgroup_rstat_lock_contended, |
236 | ||
237 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), | |
238 | ||
239 | TP_ARGS(cgrp, cpu, contended) | |
240 | ); | |
241 | ||
242 | DEFINE_EVENT(cgroup_rstat, cgroup_rstat_locked, | |
243 | ||
244 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), | |
245 | ||
246 | TP_ARGS(cgrp, cpu, contended) | |
247 | ); | |
248 | ||
249 | DEFINE_EVENT(cgroup_rstat, cgroup_rstat_unlock, | |
250 | ||
251 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), | |
252 | ||
253 | TP_ARGS(cgrp, cpu, contended) | |
254 | ); | |
255 | ||
21c38a3b JDB |
256 | /* Related to per CPU: cgroup_rstat_cpu_lock */ |
257 | DEFINE_EVENT(cgroup_rstat, cgroup_rstat_cpu_lock_contended, | |
258 | ||
259 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), | |
260 | ||
261 | TP_ARGS(cgrp, cpu, contended) | |
262 | ); | |
263 | ||
264 | DEFINE_EVENT(cgroup_rstat, cgroup_rstat_cpu_lock_contended_fastpath, | |
265 | ||
266 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), | |
267 | ||
268 | TP_ARGS(cgrp, cpu, contended) | |
269 | ); | |
270 | ||
271 | DEFINE_EVENT(cgroup_rstat, cgroup_rstat_cpu_locked, | |
272 | ||
273 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), | |
274 | ||
275 | TP_ARGS(cgrp, cpu, contended) | |
276 | ); | |
277 | ||
278 | DEFINE_EVENT(cgroup_rstat, cgroup_rstat_cpu_locked_fastpath, | |
279 | ||
280 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), | |
281 | ||
282 | TP_ARGS(cgrp, cpu, contended) | |
283 | ); | |
284 | ||
285 | DEFINE_EVENT(cgroup_rstat, cgroup_rstat_cpu_unlock, | |
286 | ||
287 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), | |
288 | ||
289 | TP_ARGS(cgrp, cpu, contended) | |
290 | ); | |
291 | ||
292 | DEFINE_EVENT(cgroup_rstat, cgroup_rstat_cpu_unlock_fastpath, | |
293 | ||
294 | TP_PROTO(struct cgroup *cgrp, int cpu, bool contended), | |
295 | ||
296 | TP_ARGS(cgrp, cpu, contended) | |
297 | ); | |
298 | ||
ed1777de TH |
299 | #endif /* _TRACE_CGROUP_H */ |
300 | ||
301 | /* This part must be outside protection */ | |
302 | #include <trace/define_trace.h> |