aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace_unlikely.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trace/trace_unlikely.c')
-rw-r--r--kernel/trace/trace_unlikely.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/kernel/trace/trace_unlikely.c b/kernel/trace/trace_unlikely.c
index e5d5969853a3..85265553918f 100644
--- a/kernel/trace/trace_unlikely.c
+++ b/kernel/trace/trace_unlikely.c
@@ -114,6 +114,48 @@ void disable_branch_tracing(void)
114 out_unlock: 114 out_unlock:
115 mutex_unlock(&branch_tracing_mutex); 115 mutex_unlock(&branch_tracing_mutex);
116} 116}
117
118static void start_branch_trace(struct trace_array *tr)
119{
120 enable_branch_tracing(tr);
121}
122
123static void stop_branch_trace(struct trace_array *tr)
124{
125 disable_branch_tracing();
126}
127
128static void branch_trace_init(struct trace_array *tr)
129{
130 int cpu;
131
132 for_each_online_cpu(cpu)
133 tracing_reset(tr, cpu);
134
135 start_branch_trace(tr);
136}
137
138static void branch_trace_reset(struct trace_array *tr)
139{
140 stop_branch_trace(tr);
141}
142
143struct tracer branch_trace __read_mostly =
144{
145 .name = "branch",
146 .init = branch_trace_init,
147 .reset = branch_trace_reset,
148#ifdef CONFIG_FTRACE_SELFTEST
149 .selftest = trace_selftest_startup_branch,
150#endif
151};
152
153__init static int init_branch_trace(void)
154{
155 return register_tracer(&branch_trace);
156}
157
158device_initcall(init_branch_trace);
117#else 159#else
118static inline 160static inline
119void trace_likely_condition(struct ftrace_branch_data *f, int val, int expect) 161void trace_likely_condition(struct ftrace_branch_data *f, int val, int expect)