25b0b44a1c
In cleaning up of the sched_switch code, the function trace recording of task comms was removed. This patch adds back the recording of comms for function trace. The output of ftrace now has the task comm instead of <...>. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
79 lines
1.6 KiB
C
79 lines
1.6 KiB
C
/*
|
|
* ring buffer based function tracer
|
|
*
|
|
* Copyright (C) 2007-2008 Steven Rostedt <srostedt@redhat.com>
|
|
* Copyright (C) 2008 Ingo Molnar <mingo@redhat.com>
|
|
*
|
|
* Based on code from the latency_tracer, that is:
|
|
*
|
|
* Copyright (C) 2004-2006 Ingo Molnar
|
|
* Copyright (C) 2004 William Lee Irwin III
|
|
*/
|
|
#include <linux/debugfs.h>
|
|
#include <linux/uaccess.h>
|
|
#include <linux/ftrace.h>
|
|
#include <linux/fs.h>
|
|
|
|
#include "trace.h"
|
|
|
|
static void function_reset(struct trace_array *tr)
|
|
{
|
|
int cpu;
|
|
|
|
tr->time_start = ftrace_now(tr->cpu);
|
|
|
|
for_each_online_cpu(cpu)
|
|
tracing_reset(tr->data[cpu]);
|
|
}
|
|
|
|
static void start_function_trace(struct trace_array *tr)
|
|
{
|
|
function_reset(tr);
|
|
atomic_inc(&trace_record_cmdline_enabled);
|
|
tracing_start_function_trace();
|
|
}
|
|
|
|
static void stop_function_trace(struct trace_array *tr)
|
|
{
|
|
tracing_stop_function_trace();
|
|
atomic_dec(&trace_record_cmdline_enabled);
|
|
}
|
|
|
|
static void function_trace_init(struct trace_array *tr)
|
|
{
|
|
if (tr->ctrl)
|
|
start_function_trace(tr);
|
|
}
|
|
|
|
static void function_trace_reset(struct trace_array *tr)
|
|
{
|
|
if (tr->ctrl)
|
|
stop_function_trace(tr);
|
|
}
|
|
|
|
static void function_trace_ctrl_update(struct trace_array *tr)
|
|
{
|
|
if (tr->ctrl)
|
|
start_function_trace(tr);
|
|
else
|
|
stop_function_trace(tr);
|
|
}
|
|
|
|
static struct tracer function_trace __read_mostly =
|
|
{
|
|
.name = "ftrace",
|
|
.init = function_trace_init,
|
|
.reset = function_trace_reset,
|
|
.ctrl_update = function_trace_ctrl_update,
|
|
#ifdef CONFIG_FTRACE_SELFTEST
|
|
.selftest = trace_selftest_startup_function,
|
|
#endif
|
|
};
|
|
|
|
static __init int init_function_trace(void)
|
|
{
|
|
return register_tracer(&function_trace);
|
|
}
|
|
|
|
device_initcall(init_function_trace);
|