1*8e8d7f13SDavid Howells /* AFS tracepoints 2*8e8d7f13SDavid Howells * 3*8e8d7f13SDavid Howells * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved. 4*8e8d7f13SDavid Howells * Written by David Howells (dhowells@redhat.com) 5*8e8d7f13SDavid Howells * 6*8e8d7f13SDavid Howells * This program is free software; you can redistribute it and/or 7*8e8d7f13SDavid Howells * modify it under the terms of the GNU General Public Licence 8*8e8d7f13SDavid Howells * as published by the Free Software Foundation; either version 9*8e8d7f13SDavid Howells * 2 of the Licence, or (at your option) any later version. 10*8e8d7f13SDavid Howells */ 11*8e8d7f13SDavid Howells #undef TRACE_SYSTEM 12*8e8d7f13SDavid Howells #define TRACE_SYSTEM afs 13*8e8d7f13SDavid Howells 14*8e8d7f13SDavid Howells #if !defined(_TRACE_AFS_H) || defined(TRACE_HEADER_MULTI_READ) 15*8e8d7f13SDavid Howells #define _TRACE_AFS_H 16*8e8d7f13SDavid Howells 17*8e8d7f13SDavid Howells #include <linux/tracepoint.h> 18*8e8d7f13SDavid Howells 19*8e8d7f13SDavid Howells TRACE_EVENT(afs_recv_data, 20*8e8d7f13SDavid Howells TP_PROTO(struct afs_call *call, unsigned count, unsigned offset, 21*8e8d7f13SDavid Howells bool want_more, int ret), 22*8e8d7f13SDavid Howells 23*8e8d7f13SDavid Howells TP_ARGS(call, count, offset, want_more, ret), 24*8e8d7f13SDavid Howells 25*8e8d7f13SDavid Howells TP_STRUCT__entry( 26*8e8d7f13SDavid Howells __field(struct rxrpc_call *, rxcall ) 27*8e8d7f13SDavid Howells __field(struct afs_call *, call ) 28*8e8d7f13SDavid Howells __field(enum afs_call_state, state ) 29*8e8d7f13SDavid Howells __field(unsigned int, count ) 30*8e8d7f13SDavid Howells __field(unsigned int, offset ) 31*8e8d7f13SDavid Howells __field(unsigned short, unmarshall ) 32*8e8d7f13SDavid Howells __field(bool, want_more ) 33*8e8d7f13SDavid Howells __field(int, ret ) 34*8e8d7f13SDavid Howells ), 35*8e8d7f13SDavid Howells 36*8e8d7f13SDavid Howells TP_fast_assign( 37*8e8d7f13SDavid Howells __entry->rxcall = call->rxcall; 38*8e8d7f13SDavid Howells __entry->call = call; 39*8e8d7f13SDavid Howells __entry->state = call->state; 40*8e8d7f13SDavid Howells __entry->unmarshall = call->unmarshall; 41*8e8d7f13SDavid Howells __entry->count = count; 42*8e8d7f13SDavid Howells __entry->offset = offset; 43*8e8d7f13SDavid Howells __entry->want_more = want_more; 44*8e8d7f13SDavid Howells __entry->ret = ret; 45*8e8d7f13SDavid Howells ), 46*8e8d7f13SDavid Howells 47*8e8d7f13SDavid Howells TP_printk("c=%p ac=%p s=%u u=%u %u/%u wm=%u ret=%d", 48*8e8d7f13SDavid Howells __entry->rxcall, 49*8e8d7f13SDavid Howells __entry->call, 50*8e8d7f13SDavid Howells __entry->state, __entry->unmarshall, 51*8e8d7f13SDavid Howells __entry->offset, __entry->count, 52*8e8d7f13SDavid Howells __entry->want_more, __entry->ret) 53*8e8d7f13SDavid Howells ); 54*8e8d7f13SDavid Howells 55*8e8d7f13SDavid Howells TRACE_EVENT(afs_notify_call, 56*8e8d7f13SDavid Howells TP_PROTO(struct rxrpc_call *rxcall, struct afs_call *call), 57*8e8d7f13SDavid Howells 58*8e8d7f13SDavid Howells TP_ARGS(rxcall, call), 59*8e8d7f13SDavid Howells 60*8e8d7f13SDavid Howells TP_STRUCT__entry( 61*8e8d7f13SDavid Howells __field(struct rxrpc_call *, rxcall ) 62*8e8d7f13SDavid Howells __field(struct afs_call *, call ) 63*8e8d7f13SDavid Howells __field(enum afs_call_state, state ) 64*8e8d7f13SDavid Howells __field(unsigned short, unmarshall ) 65*8e8d7f13SDavid Howells ), 66*8e8d7f13SDavid Howells 67*8e8d7f13SDavid Howells TP_fast_assign( 68*8e8d7f13SDavid Howells __entry->rxcall = rxcall; 69*8e8d7f13SDavid Howells __entry->call = call; 70*8e8d7f13SDavid Howells __entry->state = call->state; 71*8e8d7f13SDavid Howells __entry->unmarshall = call->unmarshall; 72*8e8d7f13SDavid Howells ), 73*8e8d7f13SDavid Howells 74*8e8d7f13SDavid Howells TP_printk("c=%p ac=%p s=%u u=%u", 75*8e8d7f13SDavid Howells __entry->rxcall, 76*8e8d7f13SDavid Howells __entry->call, 77*8e8d7f13SDavid Howells __entry->state, __entry->unmarshall) 78*8e8d7f13SDavid Howells ); 79*8e8d7f13SDavid Howells 80*8e8d7f13SDavid Howells TRACE_EVENT(afs_cb_call, 81*8e8d7f13SDavid Howells TP_PROTO(struct afs_call *call), 82*8e8d7f13SDavid Howells 83*8e8d7f13SDavid Howells TP_ARGS(call), 84*8e8d7f13SDavid Howells 85*8e8d7f13SDavid Howells TP_STRUCT__entry( 86*8e8d7f13SDavid Howells __field(struct rxrpc_call *, rxcall ) 87*8e8d7f13SDavid Howells __field(struct afs_call *, call ) 88*8e8d7f13SDavid Howells __field(const char *, name ) 89*8e8d7f13SDavid Howells __field(u32, op ) 90*8e8d7f13SDavid Howells ), 91*8e8d7f13SDavid Howells 92*8e8d7f13SDavid Howells TP_fast_assign( 93*8e8d7f13SDavid Howells __entry->rxcall = call->rxcall; 94*8e8d7f13SDavid Howells __entry->call = call; 95*8e8d7f13SDavid Howells __entry->name = call->type->name; 96*8e8d7f13SDavid Howells __entry->op = call->operation_ID; 97*8e8d7f13SDavid Howells ), 98*8e8d7f13SDavid Howells 99*8e8d7f13SDavid Howells TP_printk("c=%p ac=%p %s o=%u", 100*8e8d7f13SDavid Howells __entry->rxcall, 101*8e8d7f13SDavid Howells __entry->call, 102*8e8d7f13SDavid Howells __entry->name, 103*8e8d7f13SDavid Howells __entry->op) 104*8e8d7f13SDavid Howells ); 105*8e8d7f13SDavid Howells 106*8e8d7f13SDavid Howells #endif /* _TRACE_AFS_H */ 107*8e8d7f13SDavid Howells 108*8e8d7f13SDavid Howells /* This part must be outside protection */ 109*8e8d7f13SDavid Howells #include <trace/define_trace.h> 110