lock.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM lock
  4. #if !defined(_TRACE_LOCK_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _TRACE_LOCK_H
  6. #include <linux/lockdep.h>
  7. #include <linux/tracepoint.h>
  8. #ifdef CONFIG_LOCKDEP
  9. TRACE_EVENT(lock_acquire,
  10. TP_PROTO(struct lockdep_map *lock, unsigned int subclass,
  11. int trylock, int read, int check,
  12. struct lockdep_map *next_lock, unsigned long ip),
  13. TP_ARGS(lock, subclass, trylock, read, check, next_lock, ip),
  14. TP_STRUCT__entry(
  15. __field(unsigned int, flags)
  16. __string(name, lock->name)
  17. __field(void *, lockdep_addr)
  18. ),
  19. TP_fast_assign(
  20. __entry->flags = (trylock ? 1 : 0) | (read ? 2 : 0);
  21. __assign_str(name, lock->name);
  22. __entry->lockdep_addr = lock;
  23. ),
  24. TP_printk("%p %s%s%s", __entry->lockdep_addr,
  25. (__entry->flags & 1) ? "try " : "",
  26. (__entry->flags & 2) ? "read " : "",
  27. __get_str(name))
  28. );
  29. DECLARE_EVENT_CLASS(lock,
  30. TP_PROTO(struct lockdep_map *lock, unsigned long ip),
  31. TP_ARGS(lock, ip),
  32. TP_STRUCT__entry(
  33. __string( name, lock->name )
  34. __field( void *, lockdep_addr )
  35. ),
  36. TP_fast_assign(
  37. __assign_str(name, lock->name);
  38. __entry->lockdep_addr = lock;
  39. ),
  40. TP_printk("%p %s", __entry->lockdep_addr, __get_str(name))
  41. );
  42. DEFINE_EVENT(lock, lock_release,
  43. TP_PROTO(struct lockdep_map *lock, unsigned long ip),
  44. TP_ARGS(lock, ip)
  45. );
  46. #ifdef CONFIG_LOCK_STAT
  47. DEFINE_EVENT(lock, lock_contended,
  48. TP_PROTO(struct lockdep_map *lock, unsigned long ip),
  49. TP_ARGS(lock, ip)
  50. );
  51. DEFINE_EVENT(lock, lock_acquired,
  52. TP_PROTO(struct lockdep_map *lock, unsigned long ip),
  53. TP_ARGS(lock, ip)
  54. );
  55. #endif
  56. #endif
  57. #endif /* _TRACE_LOCK_H */
  58. /* This part must be outside protection */
  59. #include <trace/define_trace.h>