workqueue.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #undef TRACE_SYSTEM
  2. #define TRACE_SYSTEM workqueue
  3. #if !defined(_TRACE_WORKQUEUE_H) || defined(TRACE_HEADER_MULTI_READ)
  4. #define _TRACE_WORKQUEUE_H
  5. #include <linux/workqueue.h>
  6. #include <linux/sched.h>
  7. #include <linux/tracepoint.h>
  8. DECLARE_EVENT_CLASS(workqueue,
  9. TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
  10. TP_ARGS(wq_thread, work),
  11. TP_STRUCT__entry(
  12. __array(char, thread_comm, TASK_COMM_LEN)
  13. __field(pid_t, thread_pid)
  14. __field(work_func_t, func)
  15. ),
  16. TP_fast_assign(
  17. memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN);
  18. __entry->thread_pid = wq_thread->pid;
  19. __entry->func = work->func;
  20. ),
  21. TP_printk("thread=%s:%d func=%pf", __entry->thread_comm,
  22. __entry->thread_pid, __entry->func)
  23. );
  24. DEFINE_EVENT(workqueue, workqueue_insertion,
  25. TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
  26. TP_ARGS(wq_thread, work)
  27. );
  28. DEFINE_EVENT(workqueue, workqueue_execution,
  29. TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
  30. TP_ARGS(wq_thread, work)
  31. );
  32. /* Trace the creation of one workqueue thread on a cpu */
  33. TRACE_EVENT(workqueue_creation,
  34. TP_PROTO(struct task_struct *wq_thread, int cpu),
  35. TP_ARGS(wq_thread, cpu),
  36. TP_STRUCT__entry(
  37. __array(char, thread_comm, TASK_COMM_LEN)
  38. __field(pid_t, thread_pid)
  39. __field(int, cpu)
  40. ),
  41. TP_fast_assign(
  42. memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN);
  43. __entry->thread_pid = wq_thread->pid;
  44. __entry->cpu = cpu;
  45. ),
  46. TP_printk("thread=%s:%d cpu=%d", __entry->thread_comm,
  47. __entry->thread_pid, __entry->cpu)
  48. );
  49. TRACE_EVENT(workqueue_destruction,
  50. TP_PROTO(struct task_struct *wq_thread),
  51. TP_ARGS(wq_thread),
  52. TP_STRUCT__entry(
  53. __array(char, thread_comm, TASK_COMM_LEN)
  54. __field(pid_t, thread_pid)
  55. ),
  56. TP_fast_assign(
  57. memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN);
  58. __entry->thread_pid = wq_thread->pid;
  59. ),
  60. TP_printk("thread=%s:%d", __entry->thread_comm, __entry->thread_pid)
  61. );
  62. #endif /* _TRACE_WORKQUEUE_H */
  63. /* This part must be outside protection */
  64. #include <trace/define_trace.h>