Commit 4f712a4d authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Steven Rostedt (VMware)

tracing/boot: Add instance node support

Add instance node support to boot-time tracing. User can set
some options and event nodes under instance node.

 - ftrace.instance.INSTANCE[...]
   Add new INSTANCE instance. Some options and event nodes
   are acceptable for instance node.

Link: http://lkml.kernel.org/r/157867242413.17873.9814204526141500278.stgit@devnote2Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 3fbe2d6e
...@@ -20,7 +20,7 @@ extern ssize_t tracing_resize_ring_buffer(struct trace_array *tr, ...@@ -20,7 +20,7 @@ extern ssize_t tracing_resize_ring_buffer(struct trace_array *tr,
unsigned long size, int cpu_id); unsigned long size, int cpu_id);
static void __init static void __init
trace_boot_set_ftrace_options(struct trace_array *tr, struct xbc_node *node) trace_boot_set_instance_options(struct trace_array *tr, struct xbc_node *node)
{ {
struct xbc_node *anode; struct xbc_node *anode;
const char *p; const char *p;
...@@ -242,6 +242,40 @@ trace_boot_enable_tracer(struct trace_array *tr, struct xbc_node *node) ...@@ -242,6 +242,40 @@ trace_boot_enable_tracer(struct trace_array *tr, struct xbc_node *node)
} }
} }
static void __init
trace_boot_init_one_instance(struct trace_array *tr, struct xbc_node *node)
{
trace_boot_set_instance_options(tr, node);
trace_boot_init_events(tr, node);
trace_boot_enable_events(tr, node);
trace_boot_enable_tracer(tr, node);
}
static void __init
trace_boot_init_instances(struct xbc_node *node)
{
struct xbc_node *inode;
struct trace_array *tr;
const char *p;
node = xbc_node_find_child(node, "instance");
if (!node)
return;
xbc_node_for_each_child(node, inode) {
p = xbc_node_get_data(inode);
if (!p || *p == '\0')
continue;
tr = trace_array_get_by_name(p);
if (IS_ERR(tr)) {
pr_err("Failed to get trace instance %s\n", p);
continue;
}
trace_boot_init_one_instance(tr, inode);
}
}
static int __init trace_boot_init(void) static int __init trace_boot_init(void)
{ {
struct xbc_node *trace_node; struct xbc_node *trace_node;
...@@ -255,10 +289,9 @@ static int __init trace_boot_init(void) ...@@ -255,10 +289,9 @@ static int __init trace_boot_init(void)
if (!tr) if (!tr)
return 0; return 0;
trace_boot_set_ftrace_options(tr, trace_node); /* Global trace array is also one instance */
trace_boot_init_events(tr, trace_node); trace_boot_init_one_instance(tr, trace_node);
trace_boot_enable_events(tr, trace_node); trace_boot_init_instances(trace_node);
trace_boot_enable_tracer(tr, trace_node);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment