Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
trace
events
module.h
Go to the documentation of this file.
1
/*
2
* Because linux/module.h has tracepoints in the header, and ftrace.h
3
* used to include this file, define_trace.h includes linux/module.h
4
* But we do not want the module.h to override the TRACE_SYSTEM macro
5
* variable that define_trace.h is processing, so we only set it
6
* when module events are being processed, which would happen when
7
* CREATE_TRACE_POINTS is defined.
8
*/
9
#ifdef CREATE_TRACE_POINTS
10
#undef TRACE_SYSTEM
11
#define TRACE_SYSTEM module
12
#endif
13
14
#if !defined(_TRACE_MODULE_H) || defined(TRACE_HEADER_MULTI_READ)
15
#define _TRACE_MODULE_H
16
17
#include <
linux/tracepoint.h
>
18
19
#ifdef CONFIG_MODULES
20
21
struct
module
;
22
23
#define show_module_flags(flags) __print_flags(flags, "", \
24
{ (1UL << TAINT_PROPRIETARY_MODULE), "P" }, \
25
{ (1UL << TAINT_FORCED_MODULE), "F" }, \
26
{ (1UL << TAINT_CRAP), "C" })
27
28
TRACE_EVENT
(module_load,
29
30
TP_PROTO
(
struct
module
*
mod
),
31
32
TP_ARGS
(mod),
33
34
TP_STRUCT__entry
(
35
__field
(
unsigned
int
, taints )
36
__string
(
name
, mod->
name
)
37
),
38
39
TP_fast_assign
(
40
__entry
->taints = mod->taints;
41
__assign_str
(
name
, mod->
name
);
42
),
43
44
TP_printk
(
"%s %s"
,
__get_str
(
name
), show_module_flags(
__entry
->taints))
45
);
46
47
TRACE_EVENT
(
module_free
,
48
49
TP_PROTO
(
struct
module
*mod),
50
51
TP_ARGS
(mod),
52
53
TP_STRUCT__entry
(
54
__string
(
name
, mod->
name
)
55
),
56
57
TP_fast_assign
(
58
__assign_str
(
name
, mod->
name
);
59
),
60
61
TP_printk
(
"%s"
,
__get_str
(
name
))
62
);
63
64
#ifdef CONFIG_MODULE_UNLOAD
65
/* trace_module_get/put are only used if CONFIG_MODULE_UNLOAD is defined */
66
67
DECLARE_EVENT_CLASS
(module_refcnt,
68
69
TP_PROTO
(
struct
module
*mod,
unsigned
long
ip
),
70
71
TP_ARGS
(mod, ip),
72
73
TP_STRUCT__entry
(
74
__field
(
unsigned
long
, ip )
75
__field
(
int
, refcnt )
76
__string
(
name
, mod->
name
)
77
),
78
79
TP_fast_assign
(
80
__entry
->ip = ip;
81
__entry
->refcnt =
__this_cpu_read
(mod->refptr->incs) +
__this_cpu_read
(mod->refptr->decs);
82
__assign_str
(
name
, mod->
name
);
83
),
84
85
TP_printk
(
"%s call_site=%pf refcnt=%d"
,
86
__get_str
(
name
), (
void
*)
__entry
->ip,
__entry
->refcnt)
87
);
88
89
DEFINE_EVENT
(module_refcnt, module_get,
90
91
TP_PROTO
(
struct
module
*mod,
unsigned
long
ip),
92
93
TP_ARGS
(mod, ip)
94
);
95
96
DEFINE_EVENT
(module_refcnt, module_put,
97
98
TP_PROTO
(
struct
module
*mod,
unsigned
long
ip),
99
100
TP_ARGS
(mod, ip)
101
);
102
#endif
/* CONFIG_MODULE_UNLOAD */
103
104
TRACE_EVENT
(module_request,
105
106
TP_PROTO
(
char
*
name
,
bool
wait
,
unsigned
long
ip),
107
108
TP_ARGS
(name, wait, ip),
109
110
TP_STRUCT__entry
(
111
__field
(
unsigned
long
, ip )
112
__field
(
bool
, wait )
113
__string
( name, name )
114
),
115
116
TP_fast_assign
(
117
__entry
->ip = ip;
118
__entry
->wait = wait;
119
__assign_str
(name, name);
120
),
121
122
TP_printk
(
"%s wait=%d call_site=%pf"
,
123
__get_str
(name), (
int
)
__entry
->wait, (
void
*)
__entry
->ip)
124
);
125
126
#endif
/* CONFIG_MODULES */
127
128
#endif
/* _TRACE_MODULE_H */
129
130
/* This part must be outside protection */
131
#include <
trace/define_trace.h
>
Generated on Thu Jan 10 2013 12:50:01 for Linux Kernel by
1.8.2