xref: /openbmc/linux/include/trace/events/fscache.h (revision 9549332df4ed4e761a1d41c83f2c25d28bb22431)
11e1236b8SDavid Howells /* SPDX-License-Identifier: GPL-2.0-or-later */
21e1236b8SDavid Howells /* FS-Cache tracepoints
31e1236b8SDavid Howells  *
41e1236b8SDavid Howells  * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved.
51e1236b8SDavid Howells  * Written by David Howells (dhowells@redhat.com)
61e1236b8SDavid Howells  */
71e1236b8SDavid Howells #undef TRACE_SYSTEM
81e1236b8SDavid Howells #define TRACE_SYSTEM fscache
91e1236b8SDavid Howells 
101e1236b8SDavid Howells #if !defined(_TRACE_FSCACHE_H) || defined(TRACE_HEADER_MULTI_READ)
111e1236b8SDavid Howells #define _TRACE_FSCACHE_H
121e1236b8SDavid Howells 
131e1236b8SDavid Howells #include <linux/fscache.h>
141e1236b8SDavid Howells #include <linux/tracepoint.h>
151e1236b8SDavid Howells 
161e1236b8SDavid Howells /*
171e1236b8SDavid Howells  * Define enums for tracing information.
181e1236b8SDavid Howells  */
191e1236b8SDavid Howells #ifndef __FSCACHE_DECLARE_TRACE_ENUMS_ONCE_ONLY
201e1236b8SDavid Howells #define __FSCACHE_DECLARE_TRACE_ENUMS_ONCE_ONLY
211e1236b8SDavid Howells 
22*9549332dSDavid Howells enum fscache_cache_trace {
23*9549332dSDavid Howells 	fscache_cache_collision,
24*9549332dSDavid Howells 	fscache_cache_get_acquire,
25*9549332dSDavid Howells 	fscache_cache_new_acquire,
26*9549332dSDavid Howells 	fscache_cache_put_cache,
27*9549332dSDavid Howells 	fscache_cache_put_prep_failed,
28*9549332dSDavid Howells 	fscache_cache_put_relinquish,
29*9549332dSDavid Howells };
30*9549332dSDavid Howells 
311e1236b8SDavid Howells #endif
321e1236b8SDavid Howells 
331e1236b8SDavid Howells /*
341e1236b8SDavid Howells  * Declare tracing information enums and their string mappings for display.
351e1236b8SDavid Howells  */
36*9549332dSDavid Howells #define fscache_cache_traces						\
37*9549332dSDavid Howells 	EM(fscache_cache_collision,		"*COLLIDE*")		\
38*9549332dSDavid Howells 	EM(fscache_cache_get_acquire,		"GET acq  ")		\
39*9549332dSDavid Howells 	EM(fscache_cache_new_acquire,		"NEW acq  ")		\
40*9549332dSDavid Howells 	EM(fscache_cache_put_cache,		"PUT cache")		\
41*9549332dSDavid Howells 	EM(fscache_cache_put_prep_failed,	"PUT pfail")		\
42*9549332dSDavid Howells 	E_(fscache_cache_put_relinquish,	"PUT relnq")
431e1236b8SDavid Howells 
441e1236b8SDavid Howells /*
451e1236b8SDavid Howells  * Export enum symbols via userspace.
461e1236b8SDavid Howells  */
471e1236b8SDavid Howells #undef EM
481e1236b8SDavid Howells #undef E_
491e1236b8SDavid Howells #define EM(a, b) TRACE_DEFINE_ENUM(a);
501e1236b8SDavid Howells #define E_(a, b) TRACE_DEFINE_ENUM(a);
511e1236b8SDavid Howells 
52*9549332dSDavid Howells fscache_cache_traces;
53*9549332dSDavid Howells 
541e1236b8SDavid Howells /*
551e1236b8SDavid Howells  * Now redefine the EM() and E_() macros to map the enums to the strings that
561e1236b8SDavid Howells  * will be printed in the output.
571e1236b8SDavid Howells  */
581e1236b8SDavid Howells #undef EM
591e1236b8SDavid Howells #undef E_
601e1236b8SDavid Howells #define EM(a, b)	{ a, b },
611e1236b8SDavid Howells #define E_(a, b)	{ a, b }
621e1236b8SDavid Howells 
631e1236b8SDavid Howells 
64*9549332dSDavid Howells TRACE_EVENT(fscache_cache,
65*9549332dSDavid Howells 	    TP_PROTO(unsigned int cache_debug_id,
66*9549332dSDavid Howells 		     int usage,
67*9549332dSDavid Howells 		     enum fscache_cache_trace where),
68*9549332dSDavid Howells 
69*9549332dSDavid Howells 	    TP_ARGS(cache_debug_id, usage, where),
70*9549332dSDavid Howells 
71*9549332dSDavid Howells 	    TP_STRUCT__entry(
72*9549332dSDavid Howells 		    __field(unsigned int,		cache		)
73*9549332dSDavid Howells 		    __field(int,			usage		)
74*9549332dSDavid Howells 		    __field(enum fscache_cache_trace,	where		)
75*9549332dSDavid Howells 			     ),
76*9549332dSDavid Howells 
77*9549332dSDavid Howells 	    TP_fast_assign(
78*9549332dSDavid Howells 		    __entry->cache	= cache_debug_id;
79*9549332dSDavid Howells 		    __entry->usage	= usage;
80*9549332dSDavid Howells 		    __entry->where	= where;
81*9549332dSDavid Howells 			   ),
82*9549332dSDavid Howells 
83*9549332dSDavid Howells 	    TP_printk("C=%08x %s r=%d",
84*9549332dSDavid Howells 		      __entry->cache,
85*9549332dSDavid Howells 		      __print_symbolic(__entry->where, fscache_cache_traces),
86*9549332dSDavid Howells 		      __entry->usage)
87*9549332dSDavid Howells 	    );
88*9549332dSDavid Howells 
891e1236b8SDavid Howells #endif /* _TRACE_FSCACHE_H */
901e1236b8SDavid Howells 
911e1236b8SDavid Howells /* This part must be outside protection */
921e1236b8SDavid Howells #include <trace/define_trace.h>
93