]> bbs.cooldavid.org Git - net-next-2.6.git/blame - include/trace/events/module.h
tracing: Remove side effect from module tracepoints that caused a GPF
[net-next-2.6.git] / include / trace / events / module.h
CommitLineData
7ead8b83
LZ
1#undef TRACE_SYSTEM
2#define TRACE_SYSTEM module
3
4#if !defined(_TRACE_MODULE_H) || defined(TRACE_HEADER_MULTI_READ)
5#define _TRACE_MODULE_H
6
7#include <linux/tracepoint.h>
8
9#ifdef CONFIG_MODULES
10
11struct module;
12
13#define show_module_flags(flags) __print_flags(flags, "", \
14 { (1UL << TAINT_PROPRIETARY_MODULE), "P" }, \
15 { (1UL << TAINT_FORCED_MODULE), "F" }, \
16 { (1UL << TAINT_CRAP), "C" })
17
18TRACE_EVENT(module_load,
19
20 TP_PROTO(struct module *mod),
21
22 TP_ARGS(mod),
23
24 TP_STRUCT__entry(
25 __field( unsigned int, taints )
26 __string( name, mod->name )
27 ),
28
29 TP_fast_assign(
30 __entry->taints = mod->taints;
31 __assign_str(name, mod->name);
32 ),
33
34 TP_printk("%s %s", __get_str(name), show_module_flags(__entry->taints))
35);
36
37TRACE_EVENT(module_free,
38
39 TP_PROTO(struct module *mod),
40
41 TP_ARGS(mod),
42
43 TP_STRUCT__entry(
44 __string( name, mod->name )
45 ),
46
47 TP_fast_assign(
48 __assign_str(name, mod->name);
49 ),
50
51 TP_printk("%s", __get_str(name))
52);
53
925684d6 54DECLARE_EVENT_CLASS(module_refcnt,
7ead8b83 55
ae832d1e 56 TP_PROTO(struct module *mod, unsigned long ip),
7ead8b83 57
ae832d1e 58 TP_ARGS(mod, ip),
7ead8b83
LZ
59
60 TP_STRUCT__entry(
61 __field( unsigned long, ip )
62 __field( int, refcnt )
63 __string( name, mod->name )
64 ),
65
66 TP_fast_assign(
67 __entry->ip = ip;
ae832d1e 68 __entry->refcnt = __this_cpu_read(mod->refptr->count);
7ead8b83
LZ
69 __assign_str(name, mod->name);
70 ),
71
72 TP_printk("%s call_site=%pf refcnt=%d",
73 __get_str(name), (void *)__entry->ip, __entry->refcnt)
74);
75
925684d6 76DEFINE_EVENT(module_refcnt, module_get,
7ead8b83 77
ae832d1e 78 TP_PROTO(struct module *mod, unsigned long ip),
7ead8b83 79
ae832d1e 80 TP_ARGS(mod, ip)
925684d6 81);
7ead8b83 82
925684d6 83DEFINE_EVENT(module_refcnt, module_put,
7ead8b83 84
ae832d1e 85 TP_PROTO(struct module *mod, unsigned long ip),
7ead8b83 86
ae832d1e 87 TP_ARGS(mod, ip)
7ead8b83
LZ
88);
89
90TRACE_EVENT(module_request,
91
92 TP_PROTO(char *name, bool wait, unsigned long ip),
93
94 TP_ARGS(name, wait, ip),
95
96 TP_STRUCT__entry(
97 __field( bool, wait )
98 __field( unsigned long, ip )
99 __string( name, name )
100 ),
101
102 TP_fast_assign(
103 __entry->wait = wait;
104 __entry->ip = ip;
105 __assign_str(name, name);
106 ),
107
108 TP_printk("%s wait=%d call_site=%pf",
109 __get_str(name), (int)__entry->wait, (void *)__entry->ip)
110);
111
112#endif /* CONFIG_MODULES */
113
114#endif /* _TRACE_MODULE_H */
115
116/* This part must be outside protection */
117#include <trace/define_trace.h>
118