#undef TRACE_SYSTEM #define TRACE_SYSTEM sunrpc #if !defined(_TRACE_SUNRPC_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_SUNRPC_H #include #include #include DECLARE_EVENT_CLASS(rpc_task_status, TP_PROTO(struct rpc_task *task), TP_ARGS(task), TP_STRUCT__entry( __field(const struct rpc_task *, task) __field(const struct rpc_clnt *, clnt) __field(int, status) ), TP_fast_assign( __entry->task = task; __entry->clnt = task->tk_client; __entry->status = task->tk_status; ), TP_printk("task:%p@%p, status %d",__entry->task, __entry->clnt, __entry->status) ); DEFINE_EVENT(rpc_task_status, rpc_call_status, TP_PROTO(struct rpc_task *task), TP_ARGS(task) ); DEFINE_EVENT(rpc_task_status, rpc_bind_status, TP_PROTO(struct rpc_task *task), TP_ARGS(task) ); TRACE_EVENT(rpc_connect_status, TP_PROTO(struct rpc_task *task, int status), TP_ARGS(task, status), TP_STRUCT__entry( __field(const struct rpc_task *, task) __field(const struct rpc_clnt *, clnt) __field(int, status) ), TP_fast_assign( __entry->task = task; __entry->clnt = task->tk_client; __entry->status = status; ), TP_printk("task:%p@%p, status %d",__entry->task, __entry->clnt, __entry->status) ); DECLARE_EVENT_CLASS(rpc_task_running, TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), TP_ARGS(clnt, task, action), TP_STRUCT__entry( __field(const struct rpc_clnt *, clnt) __field(const struct rpc_task *, task) __field(const void *, action) __field(unsigned long, runstate) __field(int, status) __field(unsigned short, flags) ), TP_fast_assign( __entry->clnt = clnt; __entry->task = task; __entry->action = action; __entry->runstate = task->tk_runstate; __entry->status = task->tk_status; __entry->flags = task->tk_flags; ), TP_printk("task:%p@%p flags=%4.4x state=%4.4lx status=%d action=%pf", __entry->task, __entry->clnt, __entry->flags, __entry->runstate, __entry->status, __entry->action ) ); DEFINE_EVENT(rpc_task_running, rpc_task_begin, TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), TP_ARGS(clnt, task, action) ); DEFINE_EVENT(rpc_task_running, rpc_task_run_action, TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), TP_ARGS(clnt, task, action) ); DEFINE_EVENT(rpc_task_running, rpc_task_complete, TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action), TP_ARGS(clnt, task, action) ); DECLARE_EVENT_CLASS(rpc_task_queued, TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q), TP_ARGS(clnt, task, q), TP_STRUCT__entry( __field(const struct rpc_clnt *, clnt) __field(const struct rpc_task *, task) __field(unsigned long, timeout) __field(unsigned long, runstate) __field(int, status) __field(unsigned short, flags) __string(q_name, rpc_qname(q)) ), TP_fast_assign( __entry->clnt = clnt; __entry->task = task; __entry->timeout = task->tk_timeout; __entry->runstate = task->tk_runstate; __entry->status = task->tk_status; __entry->flags = task->tk_flags; __assign_str(q_name, rpc_qname(q)); ), TP_printk("task:%p@%p flags=%4.4x state=%4.4lx status=%d timeout=%lu queue=%s", __entry->task, __entry->clnt, __entry->flags, __entry->runstate, __entry->status, __entry->timeout, __get_str(q_name) ) ); DEFINE_EVENT(rpc_task_queued, rpc_task_sleep, TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q), TP_ARGS(clnt, task, q) ); DEFINE_EVENT(rpc_task_queued, rpc_task_wakeup, TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q), TP_ARGS(clnt, task, q) ); #endif /* _TRACE_SUNRPC_H */ #include