ftrace: sysprof-plugin, add self-tests
Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
56a08bdcff
commit
a6dd24f8d0
3 changed files with 35 additions and 3 deletions
|
@ -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
|
||||||
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)
|
||||||
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)
|
||||||
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 =
|
||||||
.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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue