aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>2016-08-05 12:41:52 -0400
committerSteven Rostedt <rostedt@goodmis.org>2016-08-09 09:51:23 -0400
commitc87edb36118664f1fa275107c1138b6f47793240 (patch)
tree20714a174710f713ef6594b5eab25c009649e497
parent7522c03ae307e657114ff909aec650304371a134 (diff)
tracing: Fix tick_stop tracepoint symbols for user export
The symbols used in the tick_stop tracepoint were not being converted properly into integers in the trace_stop format file. Instead we had this: print fmt: "success=%d dependency=%s", REC->success, __print_symbolic(REC->dependency, { 0, "NONE" }, { (1 << TICK_DEP_BIT_POSIX_TIMER), "POSIX_TIMER" }, { (1 << TICK_DEP_BIT_PERF_EVENTS), "PERF_EVENTS" }, { (1 << TICK_DEP_BIT_SCHED), "SCHED" }, { (1 << TICK_DEP_BIT_CLOCK_UNSTABLE), "CLOCK_UNSTABLE" }) User space tools have no idea how to parse "TICK_DEP_BIT_SCHED" or the other symbols used to do the bit shifting. The reason is that the conversion was done with using the TICK_DEP_MASK_* symbols which are just macros that convert to the BIT shift itself (with the exception of NONE, which was converted properly, because it doesn't use bits, and is defined as zero). The TICK_DEP_BIT_* needs to be denoted by TRACE_DEFINE_ENUM() in order to have this properly converted for user space tools to parse this event. Cc: stable@vger.kernel.org Cc: Frederic Weisbecker <fweisbec@gmail.com> Fixes: e6e6cc22e067 ("nohz: Use enum code for tick stop failure tracing message") Reported-by: Luiz Capitulino <lcapitulino@redhat.com> Tested-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--include/trace/events/timer.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/include/trace/events/timer.h b/include/trace/events/timer.h
index 51440131d337..28c5da6fdfac 100644
--- a/include/trace/events/timer.h
+++ b/include/trace/events/timer.h
@@ -330,24 +330,32 @@ TRACE_EVENT(itimer_expire,
330#ifdef CONFIG_NO_HZ_COMMON 330#ifdef CONFIG_NO_HZ_COMMON
331 331
332#define TICK_DEP_NAMES \ 332#define TICK_DEP_NAMES \
333 tick_dep_name(NONE) \ 333 tick_dep_mask_name(NONE) \
334 tick_dep_name(POSIX_TIMER) \ 334 tick_dep_name(POSIX_TIMER) \
335 tick_dep_name(PERF_EVENTS) \ 335 tick_dep_name(PERF_EVENTS) \
336 tick_dep_name(SCHED) \ 336 tick_dep_name(SCHED) \
337 tick_dep_name_end(CLOCK_UNSTABLE) 337 tick_dep_name_end(CLOCK_UNSTABLE)
338 338
339#undef tick_dep_name 339#undef tick_dep_name
340#undef tick_dep_mask_name
340#undef tick_dep_name_end 341#undef tick_dep_name_end
341 342
342#define tick_dep_name(sdep) TRACE_DEFINE_ENUM(TICK_DEP_MASK_##sdep); 343/* The MASK will convert to their bits and they need to be processed too */
343#define tick_dep_name_end(sdep) TRACE_DEFINE_ENUM(TICK_DEP_MASK_##sdep); 344#define tick_dep_name(sdep) TRACE_DEFINE_ENUM(TICK_DEP_BIT_##sdep); \
345 TRACE_DEFINE_ENUM(TICK_DEP_MASK_##sdep);
346#define tick_dep_name_end(sdep) TRACE_DEFINE_ENUM(TICK_DEP_BIT_##sdep); \
347 TRACE_DEFINE_ENUM(TICK_DEP_MASK_##sdep);
348/* NONE only has a mask defined for it */
349#define tick_dep_mask_name(sdep) TRACE_DEFINE_ENUM(TICK_DEP_MASK_##sdep);
344 350
345TICK_DEP_NAMES 351TICK_DEP_NAMES
346 352
347#undef tick_dep_name 353#undef tick_dep_name
354#undef tick_dep_mask_name
348#undef tick_dep_name_end 355#undef tick_dep_name_end
349 356
350#define tick_dep_name(sdep) { TICK_DEP_MASK_##sdep, #sdep }, 357#define tick_dep_name(sdep) { TICK_DEP_MASK_##sdep, #sdep },
358#define tick_dep_mask_name(sdep) { TICK_DEP_MASK_##sdep, #sdep },
351#define tick_dep_name_end(sdep) { TICK_DEP_MASK_##sdep, #sdep } 359#define tick_dep_name_end(sdep) { TICK_DEP_MASK_##sdep, #sdep }
352 360
353#define show_tick_dep_name(val) \ 361#define show_tick_dep_name(val) \