sunrpc.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. #undef TRACE_SYSTEM
  2. #define TRACE_SYSTEM sunrpc
  3. #if !defined(_TRACE_SUNRPC_H) || defined(TRACE_HEADER_MULTI_READ)
  4. #define _TRACE_SUNRPC_H
  5. #include <linux/sunrpc/sched.h>
  6. #include <linux/sunrpc/clnt.h>
  7. #include <linux/tracepoint.h>
  8. DECLARE_EVENT_CLASS(rpc_task_status,
  9. TP_PROTO(struct rpc_task *task),
  10. TP_ARGS(task),
  11. TP_STRUCT__entry(
  12. __field(const struct rpc_task *, task)
  13. __field(const struct rpc_clnt *, clnt)
  14. __field(int, status)
  15. ),
  16. TP_fast_assign(
  17. __entry->task = task;
  18. __entry->clnt = task->tk_client;
  19. __entry->status = task->tk_status;
  20. ),
  21. TP_printk("task:%p@%p, status %d",__entry->task, __entry->clnt, __entry->status)
  22. );
  23. DEFINE_EVENT(rpc_task_status, rpc_call_status,
  24. TP_PROTO(struct rpc_task *task),
  25. TP_ARGS(task)
  26. );
  27. DEFINE_EVENT(rpc_task_status, rpc_bind_status,
  28. TP_PROTO(struct rpc_task *task),
  29. TP_ARGS(task)
  30. );
  31. TRACE_EVENT(rpc_connect_status,
  32. TP_PROTO(struct rpc_task *task, int status),
  33. TP_ARGS(task, status),
  34. TP_STRUCT__entry(
  35. __field(const struct rpc_task *, task)
  36. __field(const struct rpc_clnt *, clnt)
  37. __field(int, status)
  38. ),
  39. TP_fast_assign(
  40. __entry->task = task;
  41. __entry->clnt = task->tk_client;
  42. __entry->status = status;
  43. ),
  44. TP_printk("task:%p@%p, status %d",__entry->task, __entry->clnt, __entry->status)
  45. );
  46. DECLARE_EVENT_CLASS(rpc_task_running,
  47. TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
  48. TP_ARGS(clnt, task, action),
  49. TP_STRUCT__entry(
  50. __field(const struct rpc_clnt *, clnt)
  51. __field(const struct rpc_task *, task)
  52. __field(const void *, action)
  53. __field(unsigned long, runstate)
  54. __field(int, status)
  55. __field(unsigned short, flags)
  56. ),
  57. TP_fast_assign(
  58. __entry->clnt = clnt;
  59. __entry->task = task;
  60. __entry->action = action;
  61. __entry->runstate = task->tk_runstate;
  62. __entry->status = task->tk_status;
  63. __entry->flags = task->tk_flags;
  64. ),
  65. TP_printk("task:%p@%p flags=%4.4x state=%4.4lx status=%d action=%pf",
  66. __entry->task,
  67. __entry->clnt,
  68. __entry->flags,
  69. __entry->runstate,
  70. __entry->status,
  71. __entry->action
  72. )
  73. );
  74. DEFINE_EVENT(rpc_task_running, rpc_task_begin,
  75. TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
  76. TP_ARGS(clnt, task, action)
  77. );
  78. DEFINE_EVENT(rpc_task_running, rpc_task_run_action,
  79. TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
  80. TP_ARGS(clnt, task, action)
  81. );
  82. DEFINE_EVENT(rpc_task_running, rpc_task_complete,
  83. TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
  84. TP_ARGS(clnt, task, action)
  85. );
  86. DECLARE_EVENT_CLASS(rpc_task_queued,
  87. TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
  88. TP_ARGS(clnt, task, q),
  89. TP_STRUCT__entry(
  90. __field(const struct rpc_clnt *, clnt)
  91. __field(const struct rpc_task *, task)
  92. __field(unsigned long, timeout)
  93. __field(unsigned long, runstate)
  94. __field(int, status)
  95. __field(unsigned short, flags)
  96. __string(q_name, rpc_qname(q))
  97. ),
  98. TP_fast_assign(
  99. __entry->clnt = clnt;
  100. __entry->task = task;
  101. __entry->timeout = task->tk_timeout;
  102. __entry->runstate = task->tk_runstate;
  103. __entry->status = task->tk_status;
  104. __entry->flags = task->tk_flags;
  105. __assign_str(q_name, rpc_qname(q));
  106. ),
  107. TP_printk("task:%p@%p flags=%4.4x state=%4.4lx status=%d timeout=%lu queue=%s",
  108. __entry->task,
  109. __entry->clnt,
  110. __entry->flags,
  111. __entry->runstate,
  112. __entry->status,
  113. __entry->timeout,
  114. __get_str(q_name)
  115. )
  116. );
  117. DEFINE_EVENT(rpc_task_queued, rpc_task_sleep,
  118. TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
  119. TP_ARGS(clnt, task, q)
  120. );
  121. DEFINE_EVENT(rpc_task_queued, rpc_task_wakeup,
  122. TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
  123. TP_ARGS(clnt, task, q)
  124. );
  125. #endif /* _TRACE_SUNRPC_H */
  126. #include <trace/define_trace.h>