提交 a6dd24f8 编写于 作者: I Ingo Molnar 提交者: Thomas Gleixner

ftrace: sysprof-plugin, add self-tests

Signed-off-by: NIngo Molnar <mingo@elte.hu>
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
上级 56a08bdc
...@@ -280,6 +280,10 @@ extern int trace_selftest_startup_wakeup(struct tracer *trace, ...@@ -280,6 +280,10 @@ extern int trace_selftest_startup_wakeup(struct tracer *trace,
extern int trace_selftest_startup_sched_switch(struct tracer *trace, extern int trace_selftest_startup_sched_switch(struct tracer *trace,
struct trace_array *tr); struct trace_array *tr);
#endif #endif
#ifdef CONFIG_SYSPROF_TRACER
extern int trace_selftest_startup_sysprof(struct tracer *trace,
struct trace_array *tr);
#endif
#endif /* CONFIG_FTRACE_STARTUP_TEST */ #endif /* CONFIG_FTRACE_STARTUP_TEST */
extern void *head_page(struct trace_array_cpu *data); extern void *head_page(struct trace_array_cpu *data);
......
...@@ -537,3 +537,31 @@ trace_selftest_startup_sched_switch(struct tracer *trace, struct trace_array *tr ...@@ -537,3 +537,31 @@ trace_selftest_startup_sched_switch(struct tracer *trace, struct trace_array *tr
return ret; return ret;
} }
#endif /* CONFIG_CONTEXT_SWITCH_TRACER */ #endif /* CONFIG_CONTEXT_SWITCH_TRACER */
#ifdef CONFIG_SYSPROF_TRACER
int
trace_selftest_startup_sysprof(struct tracer *trace, struct trace_array *tr)
{
unsigned long count;
int ret;
/* start the tracing */
tr->ctrl = 1;
trace->init(tr);
/* Sleep for a 1/10 of a second */
msleep(100);
/* stop the tracing. */
tr->ctrl = 0;
trace->ctrl_update(tr);
/* check the trace buffer */
ret = trace_test_buffer(tr, &count);
trace->reset(tr);
if (!ret && !count) {
printk(KERN_CONT ".. no entries found ..");
ret = -1;
}
return ret;
}
#endif /* CONFIG_SYSPROF_TRACER */
...@@ -126,7 +126,7 @@ static void start_stack_timers(void) ...@@ -126,7 +126,7 @@ static void start_stack_timers(void)
for_each_online_cpu(cpu) { for_each_online_cpu(cpu) {
set_cpus_allowed_ptr(current, &cpumask_of_cpu(cpu)); set_cpus_allowed_ptr(current, &cpumask_of_cpu(cpu));
start_stack_timer(cpu); start_stack_timer(cpu);
printk("started timer on cpu%d\n", cpu); printk(KERN_INFO "started sysprof timer on cpu%d\n", cpu);
} }
set_cpus_allowed_ptr(current, &saved_mask); set_cpus_allowed_ptr(current, &saved_mask);
} }
...@@ -136,7 +136,7 @@ static void stop_stack_timer(int cpu) ...@@ -136,7 +136,7 @@ static void stop_stack_timer(int cpu)
struct hrtimer *hrtimer = &per_cpu(stack_trace_hrtimer, cpu); struct hrtimer *hrtimer = &per_cpu(stack_trace_hrtimer, cpu);
hrtimer_cancel(hrtimer); hrtimer_cancel(hrtimer);
printk("cancelled timer on cpu%d\n", cpu); printk(KERN_INFO "cancelled sysprof timer on cpu%d\n", cpu);
} }
static void stop_stack_timers(void) static void stop_stack_timers(void)
...@@ -200,7 +200,7 @@ static struct tracer stack_trace __read_mostly = ...@@ -200,7 +200,7 @@ static struct tracer stack_trace __read_mostly =
.reset = stack_trace_reset, .reset = stack_trace_reset,
.ctrl_update = stack_trace_ctrl_update, .ctrl_update = stack_trace_ctrl_update,
#ifdef CONFIG_FTRACE_SELFTEST #ifdef CONFIG_FTRACE_SELFTEST
.selftest = trace_selftest_startup_stack, .selftest = trace_selftest_startup_sysprof,
#endif #endif
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册