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