fence.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #undef TRACE_SYSTEM
  2. #define TRACE_SYSTEM fence
  3. #if !defined(_TRACE_FENCE_H) || defined(TRACE_HEADER_MULTI_READ)
  4. #define _TRACE_FENCE_H
  5. #include <linux/tracepoint.h>
  6. struct fence;
  7. TRACE_EVENT(fence_annotate_wait_on,
  8. /* fence: the fence waiting on f1, f1: the fence to be waited on. */
  9. TP_PROTO(struct fence *fence, struct fence *f1),
  10. TP_ARGS(fence, f1),
  11. TP_STRUCT__entry(
  12. __string(driver, fence->ops->get_driver_name(fence))
  13. __string(timeline, fence->ops->get_driver_name(fence))
  14. __field(unsigned int, context)
  15. __field(unsigned int, seqno)
  16. __string(waiting_driver, f1->ops->get_driver_name(f1))
  17. __string(waiting_timeline, f1->ops->get_timeline_name(f1))
  18. __field(unsigned int, waiting_context)
  19. __field(unsigned int, waiting_seqno)
  20. ),
  21. TP_fast_assign(
  22. __assign_str(driver, fence->ops->get_driver_name(fence))
  23. __assign_str(timeline, fence->ops->get_timeline_name(fence))
  24. __entry->context = fence->context;
  25. __entry->seqno = fence->seqno;
  26. __assign_str(waiting_driver, f1->ops->get_driver_name(f1))
  27. __assign_str(waiting_timeline, f1->ops->get_timeline_name(f1))
  28. __entry->waiting_context = f1->context;
  29. __entry->waiting_seqno = f1->seqno;
  30. ),
  31. TP_printk("driver=%s timeline=%s context=%u seqno=%u " \
  32. "waits on driver=%s timeline=%s context=%u seqno=%u",
  33. __get_str(driver), __get_str(timeline), __entry->context,
  34. __entry->seqno,
  35. __get_str(waiting_driver), __get_str(waiting_timeline),
  36. __entry->waiting_context, __entry->waiting_seqno)
  37. );
  38. DECLARE_EVENT_CLASS(fence,
  39. TP_PROTO(struct fence *fence),
  40. TP_ARGS(fence),
  41. TP_STRUCT__entry(
  42. __string(driver, fence->ops->get_driver_name(fence))
  43. __string(timeline, fence->ops->get_timeline_name(fence))
  44. __field(unsigned int, context)
  45. __field(unsigned int, seqno)
  46. ),
  47. TP_fast_assign(
  48. __assign_str(driver, fence->ops->get_driver_name(fence))
  49. __assign_str(timeline, fence->ops->get_timeline_name(fence))
  50. __entry->context = fence->context;
  51. __entry->seqno = fence->seqno;
  52. ),
  53. TP_printk("driver=%s timeline=%s context=%u seqno=%u",
  54. __get_str(driver), __get_str(timeline), __entry->context,
  55. __entry->seqno)
  56. );
  57. DEFINE_EVENT(fence, fence_emit,
  58. TP_PROTO(struct fence *fence),
  59. TP_ARGS(fence)
  60. );
  61. DEFINE_EVENT(fence, fence_init,
  62. TP_PROTO(struct fence *fence),
  63. TP_ARGS(fence)
  64. );
  65. DEFINE_EVENT(fence, fence_destroy,
  66. TP_PROTO(struct fence *fence),
  67. TP_ARGS(fence)
  68. );
  69. DEFINE_EVENT(fence, fence_enable_signal,
  70. TP_PROTO(struct fence *fence),
  71. TP_ARGS(fence)
  72. );
  73. DEFINE_EVENT(fence, fence_signaled,
  74. TP_PROTO(struct fence *fence),
  75. TP_ARGS(fence)
  76. );
  77. DEFINE_EVENT(fence, fence_wait_start,
  78. TP_PROTO(struct fence *fence),
  79. TP_ARGS(fence)
  80. );
  81. DEFINE_EVENT(fence, fence_wait_end,
  82. TP_PROTO(struct fence *fence),
  83. TP_ARGS(fence)
  84. );
  85. #endif /* _TRACE_FENCE_H */
  86. /* This part must be outside protection */
  87. #include <trace/define_trace.h>