tracing: Add trace options for core options to instances
Allow instances to have their own options, at least for the core options (non tracer specific ones). There are a few global options that should not be added to instances, like enabling of trace_printk, and the sched comm recording, which do not have a specific trace instance associated to them. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
Родитель
2d34f48955
Коммит
16270145ce
|
@ -258,6 +258,11 @@ unsigned long long ns2usecs(cycle_t nsec)
|
||||||
TRACE_ITER_RECORD_CMD | TRACE_ITER_OVERWRITE | \
|
TRACE_ITER_RECORD_CMD | TRACE_ITER_OVERWRITE | \
|
||||||
TRACE_ITER_IRQ_INFO | TRACE_ITER_MARKERS)
|
TRACE_ITER_IRQ_INFO | TRACE_ITER_MARKERS)
|
||||||
|
|
||||||
|
/* trace_options that are only supported by global_trace */
|
||||||
|
#define TOP_LEVEL_TRACE_FLAGS (TRACE_ITER_PRINTK | \
|
||||||
|
TRACE_ITER_PRINTK_MSGONLY | TRACE_ITER_RECORD_CMD)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The global_trace is the descriptor that holds the tracing
|
* The global_trace is the descriptor that holds the tracing
|
||||||
* buffers for the live tracing. For each CPU, it contains
|
* buffers for the live tracing. For each CPU, it contains
|
||||||
|
@ -6387,17 +6392,21 @@ create_trace_option_core_file(struct trace_array *tr,
|
||||||
&trace_options_core_fops);
|
&trace_options_core_fops);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __init void create_trace_options_dir(struct trace_array *tr)
|
static void create_trace_options_dir(struct trace_array *tr)
|
||||||
{
|
{
|
||||||
struct dentry *t_options;
|
struct dentry *t_options;
|
||||||
|
bool top_level = tr == &global_trace;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
t_options = trace_options_init_dentry(tr);
|
t_options = trace_options_init_dentry(tr);
|
||||||
if (!t_options)
|
if (!t_options)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; trace_options[i]; i++)
|
for (i = 0; trace_options[i]; i++) {
|
||||||
create_trace_option_core_file(tr, trace_options[i], i);
|
if (top_level ||
|
||||||
|
!((1 << i) & TOP_LEVEL_TRACE_FLAGS))
|
||||||
|
create_trace_option_core_file(tr, trace_options[i], i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t
|
static ssize_t
|
||||||
|
@ -6707,6 +6716,8 @@ init_tracer_tracefs(struct trace_array *tr, struct dentry *d_tracer)
|
||||||
trace_create_file("tracing_on", 0644, d_tracer,
|
trace_create_file("tracing_on", 0644, d_tracer,
|
||||||
tr, &rb_simple_fops);
|
tr, &rb_simple_fops);
|
||||||
|
|
||||||
|
create_trace_options_dir(tr);
|
||||||
|
|
||||||
#ifdef CONFIG_TRACER_MAX_TRACE
|
#ifdef CONFIG_TRACER_MAX_TRACE
|
||||||
trace_create_file("tracing_max_latency", 0644, d_tracer,
|
trace_create_file("tracing_max_latency", 0644, d_tracer,
|
||||||
&tr->max_latency, &tracing_max_lat_fops);
|
&tr->max_latency, &tracing_max_lat_fops);
|
||||||
|
@ -6903,8 +6914,6 @@ static __init int tracer_init_tracefs(void)
|
||||||
|
|
||||||
create_trace_instances(d_tracer);
|
create_trace_instances(d_tracer);
|
||||||
|
|
||||||
create_trace_options_dir(&global_trace);
|
|
||||||
|
|
||||||
mutex_lock(&trace_types_lock);
|
mutex_lock(&trace_types_lock);
|
||||||
for (t = trace_types; t; t = t->next)
|
for (t = trace_types; t; t = t->next)
|
||||||
add_tracer_options(&global_trace, t);
|
add_tracer_options(&global_trace, t);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче