diff options
Diffstat (limited to 'include/trace')
-rw-r--r-- | include/trace/define_trace.h | 15 | ||||
-rw-r--r-- | include/trace/events/power.h | 98 | ||||
-rw-r--r-- | include/trace/events/syscalls.h | 4 | ||||
-rw-r--r-- | include/trace/ftrace.h | 21 |
4 files changed, 125 insertions, 13 deletions
diff --git a/include/trace/define_trace.h b/include/trace/define_trace.h index 1dfab5401511..b0b4eb24d592 100644 --- a/include/trace/define_trace.h +++ b/include/trace/define_trace.h | |||
@@ -26,6 +26,15 @@ | |||
26 | #define TRACE_EVENT(name, proto, args, tstruct, assign, print) \ | 26 | #define TRACE_EVENT(name, proto, args, tstruct, assign, print) \ |
27 | DEFINE_TRACE(name) | 27 | DEFINE_TRACE(name) |
28 | 28 | ||
29 | #undef TRACE_EVENT_CONDITION | ||
30 | #define TRACE_EVENT_CONDITION(name, proto, args, cond, tstruct, assign, print) \ | ||
31 | TRACE_EVENT(name, \ | ||
32 | PARAMS(proto), \ | ||
33 | PARAMS(args), \ | ||
34 | PARAMS(tstruct), \ | ||
35 | PARAMS(assign), \ | ||
36 | PARAMS(print)) | ||
37 | |||
29 | #undef TRACE_EVENT_FN | 38 | #undef TRACE_EVENT_FN |
30 | #define TRACE_EVENT_FN(name, proto, args, tstruct, \ | 39 | #define TRACE_EVENT_FN(name, proto, args, tstruct, \ |
31 | assign, print, reg, unreg) \ | 40 | assign, print, reg, unreg) \ |
@@ -39,6 +48,10 @@ | |||
39 | #define DEFINE_EVENT_PRINT(template, name, proto, args, print) \ | 48 | #define DEFINE_EVENT_PRINT(template, name, proto, args, print) \ |
40 | DEFINE_TRACE(name) | 49 | DEFINE_TRACE(name) |
41 | 50 | ||
51 | #undef DEFINE_EVENT_CONDITION | ||
52 | #define DEFINE_EVENT_CONDITION(template, name, proto, args, cond) \ | ||
53 | DEFINE_EVENT(template, name, PARAMS(proto), PARAMS(args)) | ||
54 | |||
42 | #undef DECLARE_TRACE | 55 | #undef DECLARE_TRACE |
43 | #define DECLARE_TRACE(name, proto, args) \ | 56 | #define DECLARE_TRACE(name, proto, args) \ |
44 | DEFINE_TRACE(name) | 57 | DEFINE_TRACE(name) |
@@ -75,9 +88,11 @@ | |||
75 | 88 | ||
76 | #undef TRACE_EVENT | 89 | #undef TRACE_EVENT |
77 | #undef TRACE_EVENT_FN | 90 | #undef TRACE_EVENT_FN |
91 | #undef TRACE_EVENT_CONDITION | ||
78 | #undef DECLARE_EVENT_CLASS | 92 | #undef DECLARE_EVENT_CLASS |
79 | #undef DEFINE_EVENT | 93 | #undef DEFINE_EVENT |
80 | #undef DEFINE_EVENT_PRINT | 94 | #undef DEFINE_EVENT_PRINT |
95 | #undef DEFINE_EVENT_CONDITION | ||
81 | #undef TRACE_HEADER_MULTI_READ | 96 | #undef TRACE_HEADER_MULTI_READ |
82 | #undef DECLARE_TRACE | 97 | #undef DECLARE_TRACE |
83 | 98 | ||
diff --git a/include/trace/events/power.h b/include/trace/events/power.h index 286784d69b8f..1bcc2a8c00e2 100644 --- a/include/trace/events/power.h +++ b/include/trace/events/power.h | |||
@@ -7,16 +7,67 @@ | |||
7 | #include <linux/ktime.h> | 7 | #include <linux/ktime.h> |
8 | #include <linux/tracepoint.h> | 8 | #include <linux/tracepoint.h> |
9 | 9 | ||
10 | #ifndef _TRACE_POWER_ENUM_ | 10 | DECLARE_EVENT_CLASS(cpu, |
11 | #define _TRACE_POWER_ENUM_ | 11 | |
12 | enum { | 12 | TP_PROTO(unsigned int state, unsigned int cpu_id), |
13 | POWER_NONE = 0, | 13 | |
14 | POWER_CSTATE = 1, /* C-State */ | 14 | TP_ARGS(state, cpu_id), |
15 | POWER_PSTATE = 2, /* Fequency change or DVFS */ | 15 | |
16 | POWER_SSTATE = 3, /* Suspend */ | 16 | TP_STRUCT__entry( |
17 | }; | 17 | __field( u32, state ) |
18 | __field( u32, cpu_id ) | ||
19 | ), | ||
20 | |||
21 | TP_fast_assign( | ||
22 | __entry->state = state; | ||
23 | __entry->cpu_id = cpu_id; | ||
24 | ), | ||
25 | |||
26 | TP_printk("state=%lu cpu_id=%lu", (unsigned long)__entry->state, | ||
27 | (unsigned long)__entry->cpu_id) | ||
28 | ); | ||
29 | |||
30 | DEFINE_EVENT(cpu, cpu_idle, | ||
31 | |||
32 | TP_PROTO(unsigned int state, unsigned int cpu_id), | ||
33 | |||
34 | TP_ARGS(state, cpu_id) | ||
35 | ); | ||
36 | |||
37 | /* This file can get included multiple times, TRACE_HEADER_MULTI_READ at top */ | ||
38 | #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING | ||
39 | #define _PWR_EVENT_AVOID_DOUBLE_DEFINING | ||
40 | |||
41 | #define PWR_EVENT_EXIT -1 | ||
18 | #endif | 42 | #endif |
19 | 43 | ||
44 | DEFINE_EVENT(cpu, cpu_frequency, | ||
45 | |||
46 | TP_PROTO(unsigned int frequency, unsigned int cpu_id), | ||
47 | |||
48 | TP_ARGS(frequency, cpu_id) | ||
49 | ); | ||
50 | |||
51 | TRACE_EVENT(machine_suspend, | ||
52 | |||
53 | TP_PROTO(unsigned int state), | ||
54 | |||
55 | TP_ARGS(state), | ||
56 | |||
57 | TP_STRUCT__entry( | ||
58 | __field( u32, state ) | ||
59 | ), | ||
60 | |||
61 | TP_fast_assign( | ||
62 | __entry->state = state; | ||
63 | ), | ||
64 | |||
65 | TP_printk("state=%lu", (unsigned long)__entry->state) | ||
66 | ); | ||
67 | |||
68 | /* This code will be removed after deprecation time exceeded (2.6.41) */ | ||
69 | #ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED | ||
70 | |||
20 | /* | 71 | /* |
21 | * The power events are used for cpuidle & suspend (power_start, power_end) | 72 | * The power events are used for cpuidle & suspend (power_start, power_end) |
22 | * and for cpufreq (power_frequency) | 73 | * and for cpufreq (power_frequency) |
@@ -75,6 +126,36 @@ TRACE_EVENT(power_end, | |||
75 | 126 | ||
76 | ); | 127 | ); |
77 | 128 | ||
129 | /* Deprecated dummy functions must be protected against multi-declartion */ | ||
130 | #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | ||
131 | #define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | ||
132 | |||
133 | enum { | ||
134 | POWER_NONE = 0, | ||
135 | POWER_CSTATE = 1, | ||
136 | POWER_PSTATE = 2, | ||
137 | }; | ||
138 | #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */ | ||
139 | |||
140 | #else /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */ | ||
141 | |||
142 | #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | ||
143 | #define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED | ||
144 | enum { | ||
145 | POWER_NONE = 0, | ||
146 | POWER_CSTATE = 1, | ||
147 | POWER_PSTATE = 2, | ||
148 | }; | ||
149 | |||
150 | /* These dummy declaration have to be ripped out when the deprecated | ||
151 | events get removed */ | ||
152 | static inline void trace_power_start(u64 type, u64 state, u64 cpuid) {}; | ||
153 | static inline void trace_power_end(u64 cpuid) {}; | ||
154 | static inline void trace_power_frequency(u64 type, u64 state, u64 cpuid) {}; | ||
155 | #endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */ | ||
156 | |||
157 | #endif /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */ | ||
158 | |||
78 | /* | 159 | /* |
79 | * The clock events are used for clock enable/disable and for | 160 | * The clock events are used for clock enable/disable and for |
80 | * clock rate change | 161 | * clock rate change |
@@ -153,7 +234,6 @@ DEFINE_EVENT(power_domain, power_domain_target, | |||
153 | 234 | ||
154 | TP_ARGS(name, state, cpu_id) | 235 | TP_ARGS(name, state, cpu_id) |
155 | ); | 236 | ); |
156 | |||
157 | #endif /* _TRACE_POWER_H */ | 237 | #endif /* _TRACE_POWER_H */ |
158 | 238 | ||
159 | /* This part must be outside protection */ | 239 | /* This part must be outside protection */ |
diff --git a/include/trace/events/syscalls.h b/include/trace/events/syscalls.h index fb726ac7caee..5a4c04a75b3d 100644 --- a/include/trace/events/syscalls.h +++ b/include/trace/events/syscalls.h | |||
@@ -40,6 +40,8 @@ TRACE_EVENT_FN(sys_enter, | |||
40 | syscall_regfunc, syscall_unregfunc | 40 | syscall_regfunc, syscall_unregfunc |
41 | ); | 41 | ); |
42 | 42 | ||
43 | TRACE_EVENT_FLAGS(sys_enter, TRACE_EVENT_FL_CAP_ANY) | ||
44 | |||
43 | TRACE_EVENT_FN(sys_exit, | 45 | TRACE_EVENT_FN(sys_exit, |
44 | 46 | ||
45 | TP_PROTO(struct pt_regs *regs, long ret), | 47 | TP_PROTO(struct pt_regs *regs, long ret), |
@@ -62,6 +64,8 @@ TRACE_EVENT_FN(sys_exit, | |||
62 | syscall_regfunc, syscall_unregfunc | 64 | syscall_regfunc, syscall_unregfunc |
63 | ); | 65 | ); |
64 | 66 | ||
67 | TRACE_EVENT_FLAGS(sys_exit, TRACE_EVENT_FL_CAP_ANY) | ||
68 | |||
65 | #endif /* CONFIG_HAVE_SYSCALL_TRACEPOINTS */ | 69 | #endif /* CONFIG_HAVE_SYSCALL_TRACEPOINTS */ |
66 | 70 | ||
67 | #endif /* _TRACE_EVENTS_SYSCALLS_H */ | 71 | #endif /* _TRACE_EVENTS_SYSCALLS_H */ |
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index a9377c0083ad..e16610c208c9 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h | |||
@@ -82,6 +82,10 @@ | |||
82 | TRACE_EVENT(name, PARAMS(proto), PARAMS(args), \ | 82 | TRACE_EVENT(name, PARAMS(proto), PARAMS(args), \ |
83 | PARAMS(tstruct), PARAMS(assign), PARAMS(print)) \ | 83 | PARAMS(tstruct), PARAMS(assign), PARAMS(print)) \ |
84 | 84 | ||
85 | #undef TRACE_EVENT_FLAGS | ||
86 | #define TRACE_EVENT_FLAGS(name, value) \ | ||
87 | __TRACE_EVENT_FLAGS(name, value) | ||
88 | |||
85 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) | 89 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) |
86 | 90 | ||
87 | 91 | ||
@@ -129,6 +133,9 @@ | |||
129 | #define DEFINE_EVENT_PRINT(template, name, proto, args, print) \ | 133 | #define DEFINE_EVENT_PRINT(template, name, proto, args, print) \ |
130 | DEFINE_EVENT(template, name, PARAMS(proto), PARAMS(args)) | 134 | DEFINE_EVENT(template, name, PARAMS(proto), PARAMS(args)) |
131 | 135 | ||
136 | #undef TRACE_EVENT_FLAGS | ||
137 | #define TRACE_EVENT_FLAGS(event, flag) | ||
138 | |||
132 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) | 139 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) |
133 | 140 | ||
134 | /* | 141 | /* |
@@ -289,13 +296,19 @@ static struct trace_event_functions ftrace_event_type_funcs_##call = { \ | |||
289 | 296 | ||
290 | #undef __array | 297 | #undef __array |
291 | #define __array(type, item, len) \ | 298 | #define __array(type, item, len) \ |
292 | BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \ | 299 | do { \ |
293 | ret = trace_define_field(event_call, #type "[" #len "]", #item, \ | 300 | mutex_lock(&event_storage_mutex); \ |
301 | BUILD_BUG_ON(len > MAX_FILTER_STR_VAL); \ | ||
302 | snprintf(event_storage, sizeof(event_storage), \ | ||
303 | "%s[%d]", #type, len); \ | ||
304 | ret = trace_define_field(event_call, event_storage, #item, \ | ||
294 | offsetof(typeof(field), item), \ | 305 | offsetof(typeof(field), item), \ |
295 | sizeof(field.item), \ | 306 | sizeof(field.item), \ |
296 | is_signed_type(type), FILTER_OTHER); \ | 307 | is_signed_type(type), FILTER_OTHER); \ |
297 | if (ret) \ | 308 | mutex_unlock(&event_storage_mutex); \ |
298 | return ret; | 309 | if (ret) \ |
310 | return ret; \ | ||
311 | } while (0); | ||
299 | 312 | ||
300 | #undef __dynamic_array | 313 | #undef __dynamic_array |
301 | #define __dynamic_array(type, item, len) \ | 314 | #define __dynamic_array(type, item, len) \ |