1 #undef TRACE_SYSTEM 2 #define TRACE_SYSTEM lock 3 4 #if !defined(_TRACE_LOCK_H) || defined(TRACE_HEADER_MULTI_READ) 5 #define _TRACE_LOCK_H 6 7 #include <linux/lockdep.h> 8 #include <linux/tracepoint.h> 9 10 #ifdef CONFIG_LOCKDEP 11 12 TRACE_EVENT(lock_acquire, 13 14 TP_PROTO(struct lockdep_map *lock, unsigned int subclass, 15 int trylock, int read, int check, 16 struct lockdep_map *next_lock, unsigned long ip), 17 18 TP_ARGS(lock, subclass, trylock, read, check, next_lock, ip), 19 20 TP_STRUCT__entry( 21 __field(unsigned int, flags) 22 __string(name, lock->name) 23 __field(void *, lockdep_addr) 24 ), 25 26 TP_fast_assign( 27 __entry->flags = (trylock ? 1 : 0) | (read ? 2 : 0); 28 __assign_str(name, lock->name); 29 __entry->lockdep_addr = lock; 30 ), 31 32 TP_printk("%p %s%s%s", __entry->lockdep_addr, 33 (__entry->flags & 1) ? "try " : "", 34 (__entry->flags & 2) ? "read " : "", 35 __get_str(name)) 36 ); 37 38 TRACE_EVENT(lock_release, 39 40 TP_PROTO(struct lockdep_map *lock, int nested, unsigned long ip), 41 42 TP_ARGS(lock, nested, ip), 43 44 TP_STRUCT__entry( 45 __string(name, lock->name) 46 __field(void *, lockdep_addr) 47 ), 48 49 TP_fast_assign( 50 __assign_str(name, lock->name); 51 __entry->lockdep_addr = lock; 52 ), 53 54 TP_printk("%p %s", 55 __entry->lockdep_addr, __get_str(name)) 56 ); 57 58 #ifdef CONFIG_LOCK_STAT 59 60 TRACE_EVENT(lock_contended, 61 62 TP_PROTO(struct lockdep_map *lock, unsigned long ip), 63 64 TP_ARGS(lock, ip), 65 66 TP_STRUCT__entry( 67 __string(name, lock->name) 68 __field(void *, lockdep_addr) 69 ), 70 71 TP_fast_assign( 72 __assign_str(name, lock->name); 73 __entry->lockdep_addr = lock; 74 ), 75 76 TP_printk("%p %s", 77 __entry->lockdep_addr, __get_str(name)) 78 ); 79 80 TRACE_EVENT(lock_acquired, 81 TP_PROTO(struct lockdep_map *lock, unsigned long ip, s64 waittime), 82 83 TP_ARGS(lock, ip, waittime), 84 85 TP_STRUCT__entry( 86 __string(name, lock->name) 87 __field(s64, wait_nsec) 88 __field(void *, lockdep_addr) 89 ), 90 91 TP_fast_assign( 92 __assign_str(name, lock->name); 93 __entry->wait_nsec = waittime; 94 __entry->lockdep_addr = lock; 95 ), 96 TP_printk("%p %s (%llu ns)", __entry->lockdep_addr, 97 __get_str(name), 98 __entry->wait_nsec) 99 ); 100 101 #endif 102 #endif 103 104 #endif /* _TRACE_LOCK_H */ 105 106 /* This part must be outside protection */ 107 #include <trace/define_trace.h> 108