提交 4f99f848 编写于 作者: M Masami Hiramatsu 提交者: Steven Rostedt (VMware)

tracing/boot: Add per-group/all events enablement

Add ftrace.event.<GROUP>.enable and ftrace.event.enable
boot-time tracing, which enables all events under
given GROUP and all events respectivly.

Link: https://lkml.kernel.org/r/162264438005.302580.12019174481201855444.stgit@devnote2Signed-off-by: NMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: NSteven Rostedt (VMware) <rostedt@goodmis.org>
上级 6c610dba
...@@ -225,14 +225,37 @@ static void __init ...@@ -225,14 +225,37 @@ static void __init
trace_boot_init_events(struct trace_array *tr, struct xbc_node *node) trace_boot_init_events(struct trace_array *tr, struct xbc_node *node)
{ {
struct xbc_node *gnode, *enode; struct xbc_node *gnode, *enode;
bool enable, enable_all = false;
const char *data;
node = xbc_node_find_child(node, "event"); node = xbc_node_find_child(node, "event");
if (!node) if (!node)
return; return;
/* per-event key starts with "event.GROUP.EVENT" */ /* per-event key starts with "event.GROUP.EVENT" */
xbc_node_for_each_child(node, gnode) xbc_node_for_each_child(node, gnode) {
xbc_node_for_each_child(gnode, enode) data = xbc_node_get_data(gnode);
if (!strcmp(data, "enable")) {
enable_all = true;
continue;
}
enable = false;
xbc_node_for_each_child(gnode, enode) {
data = xbc_node_get_data(enode);
if (!strcmp(data, "enable")) {
enable = true;
continue;
}
trace_boot_init_one_event(tr, gnode, enode); trace_boot_init_one_event(tr, gnode, enode);
}
/* Event enablement must be done after event settings */
if (enable) {
data = xbc_node_get_data(gnode);
trace_array_set_clr_event(tr, data, NULL, true);
}
}
/* Ditto */
if (enable_all)
trace_array_set_clr_event(tr, NULL, NULL, true);
} }
#else #else
#define trace_boot_enable_events(tr, node) do {} while (0) #define trace_boot_enable_events(tr, node) do {} while (0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册