]>
Commit | Line | Data |
---|---|---|
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 | ||
11 | struct 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 | ||
18 | TRACE_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 | ||
37 | TRACE_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 | ||
54 | TRACE_EVENT(module_get, | |
55 | ||
56 | TP_PROTO(struct module *mod, unsigned long ip, int refcnt), | |
57 | ||
58 | TP_ARGS(mod, ip, refcnt), | |
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; | |
68 | __entry->refcnt = refcnt; | |
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 | ||
76 | TRACE_EVENT(module_put, | |
77 | ||
78 | TP_PROTO(struct module *mod, unsigned long ip, int refcnt), | |
79 | ||
80 | TP_ARGS(mod, ip, refcnt), | |
81 | ||
82 | TP_STRUCT__entry( | |
83 | __field( unsigned long, ip ) | |
84 | __field( int, refcnt ) | |
85 | __string( name, mod->name ) | |
86 | ), | |
87 | ||
88 | TP_fast_assign( | |
89 | __entry->ip = ip; | |
90 | __entry->refcnt = refcnt; | |
91 | __assign_str(name, mod->name); | |
92 | ), | |
93 | ||
94 | TP_printk("%s call_site=%pf refcnt=%d", | |
95 | __get_str(name), (void *)__entry->ip, __entry->refcnt) | |
96 | ); | |
97 | ||
98 | TRACE_EVENT(module_request, | |
99 | ||
100 | TP_PROTO(char *name, bool wait, unsigned long ip), | |
101 | ||
102 | TP_ARGS(name, wait, ip), | |
103 | ||
104 | TP_STRUCT__entry( | |
105 | __field( bool, wait ) | |
106 | __field( unsigned long, ip ) | |
107 | __string( name, name ) | |
108 | ), | |
109 | ||
110 | TP_fast_assign( | |
111 | __entry->wait = wait; | |
112 | __entry->ip = ip; | |
113 | __assign_str(name, name); | |
114 | ), | |
115 | ||
116 | TP_printk("%s wait=%d call_site=%pf", | |
117 | __get_str(name), (int)__entry->wait, (void *)__entry->ip) | |
118 | ); | |
119 | ||
120 | #endif /* CONFIG_MODULES */ | |
121 | ||
122 | #endif /* _TRACE_MODULE_H */ | |
123 | ||
124 | /* This part must be outside protection */ | |
125 | #include <trace/define_trace.h> | |
126 |