Linux Audio

Check our new training course

Yocto distribution development and maintenance

Need a Yocto distribution for your embedded project?
Loading...
Note: File does not exist in v3.15.
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/* CacheFiles tracepoints
  3 *
  4 * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved.
  5 * Written by David Howells (dhowells@redhat.com)
  6 */
  7#undef TRACE_SYSTEM
  8#define TRACE_SYSTEM cachefiles
  9
 10#if !defined(_TRACE_CACHEFILES_H) || defined(TRACE_HEADER_MULTI_READ)
 11#define _TRACE_CACHEFILES_H
 12
 13#include <linux/tracepoint.h>
 14
 15/*
 16 * Define enums for tracing information.
 17 */
 18#ifndef __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY
 19#define __CACHEFILES_DECLARE_TRACE_ENUMS_ONCE_ONLY
 20
 21enum cachefiles_obj_ref_trace {
 22	cachefiles_obj_put_wait_retry = fscache_obj_ref__nr_traces,
 23	cachefiles_obj_put_wait_timeo,
 24	cachefiles_obj_ref__nr_traces
 25};
 26
 27#endif
 28
 29/*
 30 * Define enum -> string mappings for display.
 31 */
 32#define cachefiles_obj_kill_traces				\
 33	EM(FSCACHE_OBJECT_IS_STALE,	"stale")		\
 34	EM(FSCACHE_OBJECT_NO_SPACE,	"no_space")		\
 35	EM(FSCACHE_OBJECT_WAS_RETIRED,	"was_retired")		\
 36	E_(FSCACHE_OBJECT_WAS_CULLED,	"was_culled")
 37
 38#define cachefiles_obj_ref_traces					\
 39	EM(fscache_obj_get_add_to_deps,		"GET add_to_deps")	\
 40	EM(fscache_obj_get_queue,		"GET queue")		\
 41	EM(fscache_obj_put_alloc_fail,		"PUT alloc_fail")	\
 42	EM(fscache_obj_put_attach_fail,		"PUT attach_fail")	\
 43	EM(fscache_obj_put_drop_obj,		"PUT drop_obj")		\
 44	EM(fscache_obj_put_enq_dep,		"PUT enq_dep")		\
 45	EM(fscache_obj_put_queue,		"PUT queue")		\
 46	EM(fscache_obj_put_work,		"PUT work")		\
 47	EM(cachefiles_obj_put_wait_retry,	"PUT wait_retry")	\
 48	E_(cachefiles_obj_put_wait_timeo,	"PUT wait_timeo")
 49
 50/*
 51 * Export enum symbols via userspace.
 52 */
 53#undef EM
 54#undef E_
 55#define EM(a, b) TRACE_DEFINE_ENUM(a);
 56#define E_(a, b) TRACE_DEFINE_ENUM(a);
 57
 58cachefiles_obj_kill_traces;
 59cachefiles_obj_ref_traces;
 60
 61/*
 62 * Now redefine the EM() and E_() macros to map the enums to the strings that
 63 * will be printed in the output.
 64 */
 65#undef EM
 66#undef E_
 67#define EM(a, b)	{ a, b },
 68#define E_(a, b)	{ a, b }
 69
 70
 71TRACE_EVENT(cachefiles_ref,
 72	    TP_PROTO(struct cachefiles_object *obj,
 73		     struct fscache_cookie *cookie,
 74		     enum cachefiles_obj_ref_trace why,
 75		     int usage),
 76
 77	    TP_ARGS(obj, cookie, why, usage),
 78
 79	    /* Note that obj may be NULL */
 80	    TP_STRUCT__entry(
 81		    __field(struct cachefiles_object *,		obj		)
 82		    __field(struct fscache_cookie *,		cookie		)
 83		    __field(enum cachefiles_obj_ref_trace,	why		)
 84		    __field(int,				usage		)
 85			     ),
 86
 87	    TP_fast_assign(
 88		    __entry->obj	= obj;
 89		    __entry->cookie	= cookie;
 90		    __entry->usage	= usage;
 91		    __entry->why	= why;
 92			   ),
 93
 94	    TP_printk("c=%p o=%p u=%d %s",
 95		      __entry->cookie, __entry->obj, __entry->usage,
 96		      __print_symbolic(__entry->why, cachefiles_obj_ref_traces))
 97	    );
 98
 99TRACE_EVENT(cachefiles_lookup,
100	    TP_PROTO(struct cachefiles_object *obj,
101		     struct dentry *de,
102		     struct inode *inode),
103
104	    TP_ARGS(obj, de, inode),
105
106	    TP_STRUCT__entry(
107		    __field(struct cachefiles_object *,	obj	)
108		    __field(struct dentry *,		de	)
109		    __field(struct inode *,		inode	)
110			     ),
111
112	    TP_fast_assign(
113		    __entry->obj	= obj;
114		    __entry->de		= de;
115		    __entry->inode	= inode;
116			   ),
117
118	    TP_printk("o=%p d=%p i=%p",
119		      __entry->obj, __entry->de, __entry->inode)
120	    );
121
122TRACE_EVENT(cachefiles_mkdir,
123	    TP_PROTO(struct cachefiles_object *obj,
124		     struct dentry *de, int ret),
125
126	    TP_ARGS(obj, de, ret),
127
128	    TP_STRUCT__entry(
129		    __field(struct cachefiles_object *,	obj	)
130		    __field(struct dentry *,		de	)
131		    __field(int,			ret	)
132			     ),
133
134	    TP_fast_assign(
135		    __entry->obj	= obj;
136		    __entry->de		= de;
137		    __entry->ret	= ret;
138			   ),
139
140	    TP_printk("o=%p d=%p r=%u",
141		      __entry->obj, __entry->de, __entry->ret)
142	    );
143
144TRACE_EVENT(cachefiles_create,
145	    TP_PROTO(struct cachefiles_object *obj,
146		     struct dentry *de, int ret),
147
148	    TP_ARGS(obj, de, ret),
149
150	    TP_STRUCT__entry(
151		    __field(struct cachefiles_object *,	obj	)
152		    __field(struct dentry *,		de	)
153		    __field(int,			ret	)
154			     ),
155
156	    TP_fast_assign(
157		    __entry->obj	= obj;
158		    __entry->de		= de;
159		    __entry->ret	= ret;
160			   ),
161
162	    TP_printk("o=%p d=%p r=%u",
163		      __entry->obj, __entry->de, __entry->ret)
164	    );
165
166TRACE_EVENT(cachefiles_unlink,
167	    TP_PROTO(struct cachefiles_object *obj,
168		     struct dentry *de,
169		     enum fscache_why_object_killed why),
170
171	    TP_ARGS(obj, de, why),
172
173	    /* Note that obj may be NULL */
174	    TP_STRUCT__entry(
175		    __field(struct cachefiles_object *,	obj		)
176		    __field(struct dentry *,		de		)
177		    __field(enum fscache_why_object_killed, why		)
178			     ),
179
180	    TP_fast_assign(
181		    __entry->obj	= obj;
182		    __entry->de		= de;
183		    __entry->why	= why;
184			   ),
185
186	    TP_printk("o=%p d=%p w=%s",
187		      __entry->obj, __entry->de,
188		      __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
189	    );
190
191TRACE_EVENT(cachefiles_rename,
192	    TP_PROTO(struct cachefiles_object *obj,
193		     struct dentry *de,
194		     struct dentry *to,
195		     enum fscache_why_object_killed why),
196
197	    TP_ARGS(obj, de, to, why),
198
199	    /* Note that obj may be NULL */
200	    TP_STRUCT__entry(
201		    __field(struct cachefiles_object *,	obj		)
202		    __field(struct dentry *,		de		)
203		    __field(struct dentry *,		to		)
204		    __field(enum fscache_why_object_killed, why		)
205			     ),
206
207	    TP_fast_assign(
208		    __entry->obj	= obj;
209		    __entry->de		= de;
210		    __entry->to		= to;
211		    __entry->why	= why;
212			   ),
213
214	    TP_printk("o=%p d=%p t=%p w=%s",
215		      __entry->obj, __entry->de, __entry->to,
216		      __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
217	    );
218
219TRACE_EVENT(cachefiles_mark_active,
220	    TP_PROTO(struct cachefiles_object *obj,
221		     struct dentry *de),
222
223	    TP_ARGS(obj, de),
224
225	    /* Note that obj may be NULL */
226	    TP_STRUCT__entry(
227		    __field(struct cachefiles_object *,	obj		)
228		    __field(struct dentry *,		de		)
229			     ),
230
231	    TP_fast_assign(
232		    __entry->obj	= obj;
233		    __entry->de		= de;
234			   ),
235
236	    TP_printk("o=%p d=%p",
237		      __entry->obj, __entry->de)
238	    );
239
240TRACE_EVENT(cachefiles_wait_active,
241	    TP_PROTO(struct cachefiles_object *obj,
242		     struct dentry *de,
243		     struct cachefiles_object *xobj),
244
245	    TP_ARGS(obj, de, xobj),
246
247	    /* Note that obj may be NULL */
248	    TP_STRUCT__entry(
249		    __field(struct cachefiles_object *,	obj		)
250		    __field(struct dentry *,		de		)
251		    __field(struct cachefiles_object *,	xobj		)
252		    __field(u16,			flags		)
253		    __field(u16,			fsc_flags	)
254			     ),
255
256	    TP_fast_assign(
257		    __entry->obj	= obj;
258		    __entry->de		= de;
259		    __entry->xobj	= xobj;
260		    __entry->flags	= xobj->flags;
261		    __entry->fsc_flags	= xobj->fscache.flags;
262			   ),
263
264	    TP_printk("o=%p d=%p wo=%p wf=%x wff=%x",
265		      __entry->obj, __entry->de, __entry->xobj,
266		      __entry->flags, __entry->fsc_flags)
267	    );
268
269TRACE_EVENT(cachefiles_mark_inactive,
270	    TP_PROTO(struct cachefiles_object *obj,
271		     struct dentry *de,
272		     struct inode *inode),
273
274	    TP_ARGS(obj, de, inode),
275
276	    /* Note that obj may be NULL */
277	    TP_STRUCT__entry(
278		    __field(struct cachefiles_object *,	obj		)
279		    __field(struct dentry *,		de		)
280		    __field(struct inode *,		inode		)
281			     ),
282
283	    TP_fast_assign(
284		    __entry->obj	= obj;
285		    __entry->de		= de;
286		    __entry->inode	= inode;
287			   ),
288
289	    TP_printk("o=%p d=%p i=%p",
290		      __entry->obj, __entry->de, __entry->inode)
291	    );
292
293TRACE_EVENT(cachefiles_mark_buried,
294	    TP_PROTO(struct cachefiles_object *obj,
295		     struct dentry *de,
296		     enum fscache_why_object_killed why),
297
298	    TP_ARGS(obj, de, why),
299
300	    /* Note that obj may be NULL */
301	    TP_STRUCT__entry(
302		    __field(struct cachefiles_object *,	obj		)
303		    __field(struct dentry *,		de		)
304		    __field(enum fscache_why_object_killed, why		)
305			     ),
306
307	    TP_fast_assign(
308		    __entry->obj	= obj;
309		    __entry->de		= de;
310		    __entry->why	= why;
311			   ),
312
313	    TP_printk("o=%p d=%p w=%s",
314		      __entry->obj, __entry->de,
315		      __print_symbolic(__entry->why, cachefiles_obj_kill_traces))
316	    );
317
318#endif /* _TRACE_CACHEFILES_H */
319
320/* This part must be outside protection */
321#include <trace/define_trace.h>