Blame view

include/trace/events/module.h 2.79 KB
c94fbe1d9   Steven Rostedt   tracing: Only pro...
1
2
  /*
   * Because linux/module.h has tracepoints in the header, and ftrace.h
de4772542   Paul Gortmaker   include: replace ...
3
   * used to include this file, define_trace.h includes linux/module.h
c94fbe1d9   Steven Rostedt   tracing: Only pro...
4
5
6
7
8
9
   * But we do not want the module.h to override the TRACE_SYSTEM macro
   * variable that define_trace.h is processing, so we only set it
   * when module events are being processed, which would happen when
   * CREATE_TRACE_POINTS is defined.
   */
  #ifdef CREATE_TRACE_POINTS
7ead8b831   Li Zefan   tracing/events: A...
10
11
  #undef TRACE_SYSTEM
  #define TRACE_SYSTEM module
c94fbe1d9   Steven Rostedt   tracing: Only pro...
12
  #endif
7ead8b831   Li Zefan   tracing/events: A...
13
14
15
16
17
18
19
20
21
22
23
24
  
  #if !defined(_TRACE_MODULE_H) || defined(TRACE_HEADER_MULTI_READ)
  #define _TRACE_MODULE_H
  
  #include <linux/tracepoint.h>
  
  #ifdef CONFIG_MODULES
  
  struct module;
  
  #define show_module_flags(flags) __print_flags(flags, "",	\
  	{ (1UL << TAINT_PROPRIETARY_MODULE),	"P" },		\
66cc69e34   Mathieu Desnoyers   Fix: module signa...
25
  	{ (1UL << TAINT_OOT_MODULE),		"O" },		\
7ead8b831   Li Zefan   tracing/events: A...
26
  	{ (1UL << TAINT_FORCED_MODULE),		"F" },		\
66cc69e34   Mathieu Desnoyers   Fix: module signa...
27
  	{ (1UL << TAINT_CRAP),			"C" },		\
132e9a68a   Mathieu Desnoyers   Fix: tracing: use...
28
  	{ (1UL << TAINT_UNSIGNED_MODULE),	"E" })
7ead8b831   Li Zefan   tracing/events: A...
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
  
  TRACE_EVENT(module_load,
  
  	TP_PROTO(struct module *mod),
  
  	TP_ARGS(mod),
  
  	TP_STRUCT__entry(
  		__field(	unsigned int,	taints		)
  		__string(	name,		mod->name	)
  	),
  
  	TP_fast_assign(
  		__entry->taints = mod->taints;
  		__assign_str(name, mod->name);
  	),
  
  	TP_printk("%s %s", __get_str(name), show_module_flags(__entry->taints))
  );
  
  TRACE_EVENT(module_free,
  
  	TP_PROTO(struct module *mod),
  
  	TP_ARGS(mod),
  
  	TP_STRUCT__entry(
  		__string(	name,		mod->name	)
  	),
  
  	TP_fast_assign(
  		__assign_str(name, mod->name);
  	),
  
  	TP_printk("%s", __get_str(name))
  );
eb0c53771   Steven Rostedt   tracing: Fix comp...
65
66
  #ifdef CONFIG_MODULE_UNLOAD
  /* trace_module_get/put are only used if CONFIG_MODULE_UNLOAD is defined */
925684d6d   Li Zefan   tracing: Convert ...
67
  DECLARE_EVENT_CLASS(module_refcnt,
7ead8b831   Li Zefan   tracing/events: A...
68

ae832d1e0   Li Zefan   tracing: Remove s...
69
  	TP_PROTO(struct module *mod, unsigned long ip),
7ead8b831   Li Zefan   tracing/events: A...
70

ae832d1e0   Li Zefan   tracing: Remove s...
71
  	TP_ARGS(mod, ip),
7ead8b831   Li Zefan   tracing/events: A...
72
73
74
75
76
77
78
79
80
  
  	TP_STRUCT__entry(
  		__field(	unsigned long,	ip		)
  		__field(	int,		refcnt		)
  		__string(	name,		mod->name	)
  	),
  
  	TP_fast_assign(
  		__entry->ip	= ip;
098507ae3   Romain Izard   trace: module: Ma...
81
  		__entry->refcnt	= __this_cpu_read(mod->refptr->incs) - __this_cpu_read(mod->refptr->decs);
7ead8b831   Li Zefan   tracing/events: A...
82
83
84
85
86
87
  		__assign_str(name, mod->name);
  	),
  
  	TP_printk("%s call_site=%pf refcnt=%d",
  		  __get_str(name), (void *)__entry->ip, __entry->refcnt)
  );
925684d6d   Li Zefan   tracing: Convert ...
88
  DEFINE_EVENT(module_refcnt, module_get,
7ead8b831   Li Zefan   tracing/events: A...
89

ae832d1e0   Li Zefan   tracing: Remove s...
90
  	TP_PROTO(struct module *mod, unsigned long ip),
7ead8b831   Li Zefan   tracing/events: A...
91

ae832d1e0   Li Zefan   tracing: Remove s...
92
  	TP_ARGS(mod, ip)
925684d6d   Li Zefan   tracing: Convert ...
93
  );
7ead8b831   Li Zefan   tracing/events: A...
94

925684d6d   Li Zefan   tracing: Convert ...
95
  DEFINE_EVENT(module_refcnt, module_put,
7ead8b831   Li Zefan   tracing/events: A...
96

ae832d1e0   Li Zefan   tracing: Remove s...
97
  	TP_PROTO(struct module *mod, unsigned long ip),
7ead8b831   Li Zefan   tracing/events: A...
98

ae832d1e0   Li Zefan   tracing: Remove s...
99
  	TP_ARGS(mod, ip)
7ead8b831   Li Zefan   tracing/events: A...
100
  );
eb0c53771   Steven Rostedt   tracing: Fix comp...
101
  #endif /* CONFIG_MODULE_UNLOAD */
7ead8b831   Li Zefan   tracing/events: A...
102
103
104
105
106
107
108
109
  
  TRACE_EVENT(module_request,
  
  	TP_PROTO(char *name, bool wait, unsigned long ip),
  
  	TP_ARGS(name, wait, ip),
  
  	TP_STRUCT__entry(
7ead8b831   Li Zefan   tracing/events: A...
110
  		__field(	unsigned long,	ip		)
b5e3008e4   David Sharp   tracing: Fix even...
111
  		__field(	bool,		wait		)
7ead8b831   Li Zefan   tracing/events: A...
112
113
114
115
  		__string(	name,		name		)
  	),
  
  	TP_fast_assign(
7ead8b831   Li Zefan   tracing/events: A...
116
  		__entry->ip	= ip;
b5e3008e4   David Sharp   tracing: Fix even...
117
  		__entry->wait	= wait;
7ead8b831   Li Zefan   tracing/events: A...
118
119
120
121
122
123
124
125
126
127
128
129
130
  		__assign_str(name, name);
  	),
  
  	TP_printk("%s wait=%d call_site=%pf",
  		  __get_str(name), (int)__entry->wait, (void *)__entry->ip)
  );
  
  #endif /* CONFIG_MODULES */
  
  #endif /* _TRACE_MODULE_H */
  
  /* This part must be outside protection */
  #include <trace/define_trace.h>