Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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@devnote2

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>

authored by

Masami Hiramatsu and committed by
Steven Rostedt (VMware)
4f99f848 6c610dba

+25 -2
+25 -2
kernel/trace/trace_boot.c
··· 225 225 trace_boot_init_events(struct trace_array *tr, struct xbc_node *node) 226 226 { 227 227 struct xbc_node *gnode, *enode; 228 + bool enable, enable_all = false; 229 + const char *data; 228 230 229 231 node = xbc_node_find_child(node, "event"); 230 232 if (!node) 231 233 return; 232 234 /* per-event key starts with "event.GROUP.EVENT" */ 233 - xbc_node_for_each_child(node, gnode) 234 - xbc_node_for_each_child(gnode, enode) 235 + xbc_node_for_each_child(node, gnode) { 236 + data = xbc_node_get_data(gnode); 237 + if (!strcmp(data, "enable")) { 238 + enable_all = true; 239 + continue; 240 + } 241 + enable = false; 242 + xbc_node_for_each_child(gnode, enode) { 243 + data = xbc_node_get_data(enode); 244 + if (!strcmp(data, "enable")) { 245 + enable = true; 246 + continue; 247 + } 235 248 trace_boot_init_one_event(tr, gnode, enode); 249 + } 250 + /* Event enablement must be done after event settings */ 251 + if (enable) { 252 + data = xbc_node_get_data(gnode); 253 + trace_array_set_clr_event(tr, data, NULL, true); 254 + } 255 + } 256 + /* Ditto */ 257 + if (enable_all) 258 + trace_array_set_clr_event(tr, NULL, NULL, true); 236 259 } 237 260 #else 238 261 #define trace_boot_enable_events(tr, node) do {} while (0)