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