kmem.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. #if !defined(_TRACE_KMEM_H) || defined(TRACE_HEADER_MULTI_READ)
  2. #define _TRACE_KMEM_H
  3. #include <linux/types.h>
  4. #include <linux/tracepoint.h>
  5. #undef TRACE_SYSTEM
  6. #define TRACE_SYSTEM kmem
  7. TRACE_EVENT(kmalloc,
  8. TP_PROTO(unsigned long call_site,
  9. const void *ptr,
  10. size_t bytes_req,
  11. size_t bytes_alloc,
  12. gfp_t gfp_flags),
  13. TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
  14. TP_STRUCT__entry(
  15. __field( unsigned long, call_site )
  16. __field( const void *, ptr )
  17. __field( size_t, bytes_req )
  18. __field( size_t, bytes_alloc )
  19. __field( gfp_t, gfp_flags )
  20. ),
  21. TP_fast_assign(
  22. __entry->call_site = call_site;
  23. __entry->ptr = ptr;
  24. __entry->bytes_req = bytes_req;
  25. __entry->bytes_alloc = bytes_alloc;
  26. __entry->gfp_flags = gfp_flags;
  27. ),
  28. TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x",
  29. __entry->call_site,
  30. __entry->ptr,
  31. __entry->bytes_req,
  32. __entry->bytes_alloc,
  33. __entry->gfp_flags)
  34. );
  35. TRACE_EVENT(kmem_cache_alloc,
  36. TP_PROTO(unsigned long call_site,
  37. const void *ptr,
  38. size_t bytes_req,
  39. size_t bytes_alloc,
  40. gfp_t gfp_flags),
  41. TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
  42. TP_STRUCT__entry(
  43. __field( unsigned long, call_site )
  44. __field( const void *, ptr )
  45. __field( size_t, bytes_req )
  46. __field( size_t, bytes_alloc )
  47. __field( gfp_t, gfp_flags )
  48. ),
  49. TP_fast_assign(
  50. __entry->call_site = call_site;
  51. __entry->ptr = ptr;
  52. __entry->bytes_req = bytes_req;
  53. __entry->bytes_alloc = bytes_alloc;
  54. __entry->gfp_flags = gfp_flags;
  55. ),
  56. TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x",
  57. __entry->call_site,
  58. __entry->ptr,
  59. __entry->bytes_req,
  60. __entry->bytes_alloc,
  61. __entry->gfp_flags)
  62. );
  63. TRACE_EVENT(kmalloc_node,
  64. TP_PROTO(unsigned long call_site,
  65. const void *ptr,
  66. size_t bytes_req,
  67. size_t bytes_alloc,
  68. gfp_t gfp_flags,
  69. int node),
  70. TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
  71. TP_STRUCT__entry(
  72. __field( unsigned long, call_site )
  73. __field( const void *, ptr )
  74. __field( size_t, bytes_req )
  75. __field( size_t, bytes_alloc )
  76. __field( gfp_t, gfp_flags )
  77. __field( int, node )
  78. ),
  79. TP_fast_assign(
  80. __entry->call_site = call_site;
  81. __entry->ptr = ptr;
  82. __entry->bytes_req = bytes_req;
  83. __entry->bytes_alloc = bytes_alloc;
  84. __entry->gfp_flags = gfp_flags;
  85. __entry->node = node;
  86. ),
  87. TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x node=%d",
  88. __entry->call_site,
  89. __entry->ptr,
  90. __entry->bytes_req,
  91. __entry->bytes_alloc,
  92. __entry->gfp_flags,
  93. __entry->node)
  94. );
  95. TRACE_EVENT(kmem_cache_alloc_node,
  96. TP_PROTO(unsigned long call_site,
  97. const void *ptr,
  98. size_t bytes_req,
  99. size_t bytes_alloc,
  100. gfp_t gfp_flags,
  101. int node),
  102. TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
  103. TP_STRUCT__entry(
  104. __field( unsigned long, call_site )
  105. __field( const void *, ptr )
  106. __field( size_t, bytes_req )
  107. __field( size_t, bytes_alloc )
  108. __field( gfp_t, gfp_flags )
  109. __field( int, node )
  110. ),
  111. TP_fast_assign(
  112. __entry->call_site = call_site;
  113. __entry->ptr = ptr;
  114. __entry->bytes_req = bytes_req;
  115. __entry->bytes_alloc = bytes_alloc;
  116. __entry->gfp_flags = gfp_flags;
  117. __entry->node = node;
  118. ),
  119. TP_printk("call_site=%lx ptr=%p bytes_req=%zu bytes_alloc=%zu gfp_flags=%08x node=%d",
  120. __entry->call_site,
  121. __entry->ptr,
  122. __entry->bytes_req,
  123. __entry->bytes_alloc,
  124. __entry->gfp_flags,
  125. __entry->node)
  126. );
  127. TRACE_EVENT(kfree,
  128. TP_PROTO(unsigned long call_site, const void *ptr),
  129. TP_ARGS(call_site, ptr),
  130. TP_STRUCT__entry(
  131. __field( unsigned long, call_site )
  132. __field( const void *, ptr )
  133. ),
  134. TP_fast_assign(
  135. __entry->call_site = call_site;
  136. __entry->ptr = ptr;
  137. ),
  138. TP_printk("call_site=%lx ptr=%p", __entry->call_site, __entry->ptr)
  139. );
  140. TRACE_EVENT(kmem_cache_free,
  141. TP_PROTO(unsigned long call_site, const void *ptr),
  142. TP_ARGS(call_site, ptr),
  143. TP_STRUCT__entry(
  144. __field( unsigned long, call_site )
  145. __field( const void *, ptr )
  146. ),
  147. TP_fast_assign(
  148. __entry->call_site = call_site;
  149. __entry->ptr = ptr;
  150. ),
  151. TP_printk("call_site=%lx ptr=%p", __entry->call_site, __entry->ptr)
  152. );
  153. #endif