Merge branch 'tracing/ftrace' into auto-ftrace-next

This commit is contained in:
Ingo Molnar
2008-07-14 15:58:35 +02:00
8 changed files with 54 additions and 10 deletions

View File

@@ -96,6 +96,9 @@ static DEFINE_PER_CPU(struct trace_array_cpu, max_data);
/* tracer_enabled is used to toggle activation of a tracer */
static int tracer_enabled = 1;
/* function tracing enabled */
int ftrace_function_enabled;
/*
* trace_nr_entries is the number of entries that is allocated
* for a buffer. Note, the number of entries is always rounded
@@ -134,6 +137,7 @@ static notrace void no_trace_init(struct trace_array *tr)
{
int cpu;
ftrace_function_enabled = 0;
if(tr->ctrl)
for_each_online_cpu(cpu)
tracing_reset(tr->data[cpu]);
@@ -1027,7 +1031,7 @@ function_trace_call(unsigned long ip, unsigned long parent_ip)
long disabled;
int cpu;
if (unlikely(!tracer_enabled))
if (unlikely(!ftrace_function_enabled))
return;
if (skip_trace(ip))
@@ -1052,11 +1056,15 @@ static struct ftrace_ops trace_ops __read_mostly =
void tracing_start_function_trace(void)
{
ftrace_function_enabled = 0;
register_ftrace_function(&trace_ops);
if (tracer_enabled)
ftrace_function_enabled = 1;
}
void tracing_stop_function_trace(void)
{
ftrace_function_enabled = 0;
unregister_ftrace_function(&trace_ops);
}
#endif
@@ -1383,7 +1391,7 @@ print_trace_header(struct seq_file *m, struct trace_iterator *iter)
"server",
#elif defined(CONFIG_PREEMPT_VOLUNTARY)
"desktop",
#elif defined(CONFIG_PREEMPT_DESKTOP)
#elif defined(CONFIG_PREEMPT)
"preempt",
#else
"unknown",
@@ -1892,8 +1900,10 @@ __tracing_open(struct inode *inode, struct file *file, int *ret)
m->private = iter;
/* stop the trace while dumping */
if (iter->tr->ctrl)
if (iter->tr->ctrl) {
tracer_enabled = 0;
ftrace_function_enabled = 0;
}
if (iter->trace && iter->trace->open)
iter->trace->open(iter);
@@ -1926,8 +1936,14 @@ int tracing_release(struct inode *inode, struct file *file)
iter->trace->close(iter);
/* reenable tracing if it was previously enabled */
if (iter->tr->ctrl)
if (iter->tr->ctrl) {
tracer_enabled = 1;
/*
* It is safe to enable function tracing even if it
* isn't used
*/
ftrace_function_enabled = 1;
}
mutex_unlock(&trace_types_lock);
seq_release(inode, file);