workqueue.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. TRACE_EVENT(workqueue_insertion,
  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. TRACE_EVENT(workqueue_execution,
  25. TP_PROTO(struct task_struct *wq_thread, struct work_struct *work),
  26. TP_ARGS(wq_thread, work),
  27. TP_STRUCT__entry(
  28. __array(char, thread_comm, TASK_COMM_LEN)
  29. __field(pid_t, thread_pid)
  30. __field(work_func_t, func)
  31. ),
  32. TP_fast_assign(
  33. memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN);
  34. __entry->thread_pid = wq_thread->pid;
  35. __entry->func = work->func;
  36. ),
  37. TP_printk("thread=%s:%d func=%pf", __entry->thread_comm,
  38. __entry->thread_pid, __entry->func)
  39. );
  40. /* Trace the creation of one workqueue thread on a cpu */
  41. TRACE_EVENT(workqueue_creation,
  42. TP_PROTO(struct task_struct *wq_thread, int cpu),
  43. TP_ARGS(wq_thread, cpu),
  44. TP_STRUCT__entry(
  45. __array(char, thread_comm, TASK_COMM_LEN)
  46. __field(pid_t, thread_pid)
  47. __field(int, cpu)
  48. ),
  49. TP_fast_assign(
  50. memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN);
  51. __entry->thread_pid = wq_thread->pid;
  52. __entry->cpu = cpu;
  53. ),
  54. TP_printk("thread=%s:%d cpu=%d", __entry->thread_comm,
  55. __entry->thread_pid, __entry->cpu)
  56. );
  57. TRACE_EVENT(workqueue_destruction,
  58. TP_PROTO(struct task_struct *wq_thread),
  59. TP_ARGS(wq_thread),
  60. TP_STRUCT__entry(
  61. __array(char, thread_comm, TASK_COMM_LEN)
  62. __field(pid_t, thread_pid)
  63. ),
  64. TP_fast_assign(
  65. memcpy(__entry->thread_comm, wq_thread->comm, TASK_COMM_LEN);
  66. __entry->thread_pid = wq_thread->pid;
  67. ),
  68. TP_printk("thread=%s:%d", __entry->thread_comm, __entry->thread_pid)
  69. );
  70. #endif /* _TRACE_WORKQUEUE_H */
  71. /* This part must be outside protection */
  72. #include <trace/define_trace.h>