blob: bcf1d209a00dabf7838aae49c2e5edcc5fc6dde8 [file] [log] [blame]
Li Zefand0b6e042009-07-13 10:33:21 +08001#undef TRACE_SYSTEM
2#define TRACE_SYSTEM lockdep
3
Steven Rostedtea20d922009-04-10 08:54:16 -04004#if !defined(_TRACE_LOCKDEP_H) || defined(TRACE_HEADER_MULTI_READ)
Peter Zijlstraefed7922009-03-04 12:32:55 +01005#define _TRACE_LOCKDEP_H
6
7#include <linux/lockdep.h>
8#include <linux/tracepoint.h>
9
Steven Rostedtea20d922009-04-10 08:54:16 -040010#ifdef CONFIG_LOCKDEP
11
Steven Rostedt39517092009-04-24 11:05:52 -040012TRACE_EVENT(lock_acquire,
13
Steven Rostedtea20d922009-04-10 08:54:16 -040014 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),
Steven Rostedtea20d922009-04-10 08:54:16 -040017
Steven Rostedt39517092009-04-24 11:05:52 -040018 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 ),
24
25 TP_fast_assign(
26 __entry->flags = (trylock ? 1 : 0) | (read ? 2 : 0);
27 __assign_str(name, lock->name);
28 ),
29
30 TP_printk("%s%s%s", (__entry->flags & 1) ? "try " : "",
31 (__entry->flags & 2) ? "read " : "",
32 __get_str(name))
33);
34
35TRACE_EVENT(lock_release,
36
Steven Rostedtea20d922009-04-10 08:54:16 -040037 TP_PROTO(struct lockdep_map *lock, int nested, unsigned long ip),
Steven Rostedt39517092009-04-24 11:05:52 -040038
Steven Rostedtea20d922009-04-10 08:54:16 -040039 TP_ARGS(lock, nested, ip),
Steven Rostedt39517092009-04-24 11:05:52 -040040
41 TP_STRUCT__entry(
42 __string(name, lock->name)
43 ),
44
45 TP_fast_assign(
46 __assign_str(name, lock->name);
47 ),
48
49 TP_printk("%s", __get_str(name))
50);
Steven Rostedtea20d922009-04-10 08:54:16 -040051
52#ifdef CONFIG_LOCK_STAT
53
Steven Rostedt39517092009-04-24 11:05:52 -040054TRACE_EVENT(lock_contended,
55
Steven Rostedtea20d922009-04-10 08:54:16 -040056 TP_PROTO(struct lockdep_map *lock, unsigned long ip),
Steven Rostedt39517092009-04-24 11:05:52 -040057
Steven Rostedtea20d922009-04-10 08:54:16 -040058 TP_ARGS(lock, ip),
Steven Rostedt39517092009-04-24 11:05:52 -040059
60 TP_STRUCT__entry(
61 __string(name, lock->name)
62 ),
63
64 TP_fast_assign(
65 __assign_str(name, lock->name);
66 ),
67
68 TP_printk("%s", __get_str(name))
69);
Steven Rostedtea20d922009-04-10 08:54:16 -040070
71TRACE_EVENT(lock_acquired,
72 TP_PROTO(struct lockdep_map *lock, unsigned long ip, s64 waittime),
73
74 TP_ARGS(lock, ip, waittime),
75
76 TP_STRUCT__entry(
Frederic Weisbecker7e7ca9a2009-04-19 04:54:49 +020077 __string(name, lock->name)
Steven Rostedtea20d922009-04-10 08:54:16 -040078 __field(unsigned long, wait_usec)
79 __field(unsigned long, wait_nsec_rem)
80 ),
81 TP_fast_assign(
Frederic Weisbecker7e7ca9a2009-04-19 04:54:49 +020082 __assign_str(name, lock->name);
Steven Rostedtea20d922009-04-10 08:54:16 -040083 __entry->wait_nsec_rem = do_div(waittime, NSEC_PER_USEC);
84 __entry->wait_usec = (unsigned long) waittime;
85 ),
Frederic Weisbecker7e7ca9a2009-04-19 04:54:49 +020086 TP_printk("%s (%lu.%03lu us)", __get_str(name), __entry->wait_usec,
Steven Rostedtea20d922009-04-10 08:54:16 -040087 __entry->wait_nsec_rem)
88);
Peter Zijlstraefed7922009-03-04 12:32:55 +010089
90#endif
Steven Rostedtea20d922009-04-10 08:54:16 -040091#endif
92
93#endif /* _TRACE_LOCKDEP_H */
Steven Rostedta8d154b2009-04-10 09:36:00 -040094
95/* This part must be outside protection */
96#include <trace/define_trace.h>