diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2013-08-17 21:08:37 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2013-09-23 12:15:31 -0400 |
commit | 0d75292467b0c8554d70c751a35af6514202ac28 (patch) | |
tree | ebac548cbfac7ed5ee2ac68c08208d6a1d50fd38 | |
parent | 26cdfedf6a902345f8604ea8e0b7dd2566b37a46 (diff) |
rcu: Have rcutiny tracepoints use tracepoint_string()
This commit extends the work done in f7f7bac9 (rcu: Have the RCU
tracepoints use the tracepoint_string infrastructure) to cover rcutiny.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | kernel/rcu.h | 7 | ||||
-rw-r--r-- | kernel/rcutiny.c | 17 | ||||
-rw-r--r-- | kernel/rcutree.c | 7 |
3 files changed, 17 insertions, 14 deletions
diff --git a/kernel/rcu.h b/kernel/rcu.h index 77131966c4ad..7859a0a3951e 100644 --- a/kernel/rcu.h +++ b/kernel/rcu.h | |||
@@ -122,4 +122,11 @@ int rcu_jiffies_till_stall_check(void); | |||
122 | 122 | ||
123 | #endif /* #ifdef CONFIG_RCU_STALL_COMMON */ | 123 | #endif /* #ifdef CONFIG_RCU_STALL_COMMON */ |
124 | 124 | ||
125 | /* | ||
126 | * Strings used in tracepoints need to be exported via the | ||
127 | * tracing system such that tools like perf and trace-cmd can | ||
128 | * translate the string address pointers to actual text. | ||
129 | */ | ||
130 | #define TPS(x) tracepoint_string(x) | ||
131 | |||
125 | #endif /* __LINUX_RCU_H */ | 132 | #endif /* __LINUX_RCU_H */ |
diff --git a/kernel/rcutiny.c b/kernel/rcutiny.c index 9ed6075dc562..e99eb5fb10af 100644 --- a/kernel/rcutiny.c +++ b/kernel/rcutiny.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/time.h> | 35 | #include <linux/time.h> |
36 | #include <linux/cpu.h> | 36 | #include <linux/cpu.h> |
37 | #include <linux/prefetch.h> | 37 | #include <linux/prefetch.h> |
38 | #include <linux/ftrace_event.h> | ||
38 | 39 | ||
39 | #ifdef CONFIG_RCU_TRACE | 40 | #ifdef CONFIG_RCU_TRACE |
40 | #include <trace/events/rcu.h> | 41 | #include <trace/events/rcu.h> |
@@ -58,16 +59,17 @@ static long long rcu_dynticks_nesting = DYNTICK_TASK_EXIT_IDLE; | |||
58 | static void rcu_idle_enter_common(long long newval) | 59 | static void rcu_idle_enter_common(long long newval) |
59 | { | 60 | { |
60 | if (newval) { | 61 | if (newval) { |
61 | RCU_TRACE(trace_rcu_dyntick("--=", | 62 | RCU_TRACE(trace_rcu_dyntick(TPS("--="), |
62 | rcu_dynticks_nesting, newval)); | 63 | rcu_dynticks_nesting, newval)); |
63 | rcu_dynticks_nesting = newval; | 64 | rcu_dynticks_nesting = newval; |
64 | return; | 65 | return; |
65 | } | 66 | } |
66 | RCU_TRACE(trace_rcu_dyntick("Start", rcu_dynticks_nesting, newval)); | 67 | RCU_TRACE(trace_rcu_dyntick(TPS("Start"), |
68 | rcu_dynticks_nesting, newval)); | ||
67 | if (!is_idle_task(current)) { | 69 | if (!is_idle_task(current)) { |
68 | struct task_struct *idle = idle_task(smp_processor_id()); | 70 | struct task_struct *idle = idle_task(smp_processor_id()); |
69 | 71 | ||
70 | RCU_TRACE(trace_rcu_dyntick("Error on entry: not idle task", | 72 | RCU_TRACE(trace_rcu_dyntick(TPS("Entry error: not idle task"), |
71 | rcu_dynticks_nesting, newval)); | 73 | rcu_dynticks_nesting, newval)); |
72 | ftrace_dump(DUMP_ALL); | 74 | ftrace_dump(DUMP_ALL); |
73 | WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s", | 75 | WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s", |
@@ -120,15 +122,15 @@ EXPORT_SYMBOL_GPL(rcu_irq_exit); | |||
120 | static void rcu_idle_exit_common(long long oldval) | 122 | static void rcu_idle_exit_common(long long oldval) |
121 | { | 123 | { |
122 | if (oldval) { | 124 | if (oldval) { |
123 | RCU_TRACE(trace_rcu_dyntick("++=", | 125 | RCU_TRACE(trace_rcu_dyntick(TPS("++="), |
124 | oldval, rcu_dynticks_nesting)); | 126 | oldval, rcu_dynticks_nesting)); |
125 | return; | 127 | return; |
126 | } | 128 | } |
127 | RCU_TRACE(trace_rcu_dyntick("End", oldval, rcu_dynticks_nesting)); | 129 | RCU_TRACE(trace_rcu_dyntick(TPS("End"), oldval, rcu_dynticks_nesting)); |
128 | if (!is_idle_task(current)) { | 130 | if (!is_idle_task(current)) { |
129 | struct task_struct *idle = idle_task(smp_processor_id()); | 131 | struct task_struct *idle = idle_task(smp_processor_id()); |
130 | 132 | ||
131 | RCU_TRACE(trace_rcu_dyntick("Error on exit: not idle task", | 133 | RCU_TRACE(trace_rcu_dyntick(TPS("Exit error: not idle task"), |
132 | oldval, rcu_dynticks_nesting)); | 134 | oldval, rcu_dynticks_nesting)); |
133 | ftrace_dump(DUMP_ALL); | 135 | ftrace_dump(DUMP_ALL); |
134 | WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s", | 136 | WARN_ONCE(1, "Current pid: %d comm: %s / Idle pid: %d comm: %s", |
@@ -304,7 +306,8 @@ static void __rcu_process_callbacks(struct rcu_ctrlblk *rcp) | |||
304 | RCU_TRACE(cb_count++); | 306 | RCU_TRACE(cb_count++); |
305 | } | 307 | } |
306 | RCU_TRACE(rcu_trace_sub_qlen(rcp, cb_count)); | 308 | RCU_TRACE(rcu_trace_sub_qlen(rcp, cb_count)); |
307 | RCU_TRACE(trace_rcu_batch_end(rcp->name, cb_count, 0, need_resched(), | 309 | RCU_TRACE(trace_rcu_batch_end(rcp->name, |
310 | cb_count, 0, need_resched(), | ||
308 | is_idle_task(current), | 311 | is_idle_task(current), |
309 | false)); | 312 | false)); |
310 | } | 313 | } |
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index b618d72bd8ec..62aab5ceefe9 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -61,13 +61,6 @@ | |||
61 | 61 | ||
62 | #include "rcu.h" | 62 | #include "rcu.h" |
63 | 63 | ||
64 | /* | ||
65 | * Strings used in tracepoints need to be exported via the | ||
66 | * tracing system such that tools like perf and trace-cmd can | ||
67 | * translate the string address pointers to actual text. | ||
68 | */ | ||
69 | #define TPS(x) tracepoint_string(x) | ||
70 | |||
71 | /* Data structures. */ | 64 | /* Data structures. */ |
72 | 65 | ||
73 | static struct lock_class_key rcu_node_class[RCU_NUM_LVLS]; | 66 | static struct lock_class_key rcu_node_class[RCU_NUM_LVLS]; |