Re: [PATCH v4 06/12] tracing: Change trace_boot to use synth_event interface
From: Tom Zanussi <hidden>
Date: 2020-01-31 17:49:04
Also in:
lkml
Hi Steve, It looks like you missed this patch when you pulled the other ones into for-next. Tom On Wed, 2020-01-29 at 12:59 -0600, Tom Zanussi wrote:
quoted hunk ↗ jump to hunk
Have trace_boot_add_synth_event() use the synth_event interface. Also, rename synth_event_run_cmd() to synth_event_run_command() now that trace_boot's version is gone. Signed-off-by: Tom Zanussi <zanussi@kernel.org> Acked-by: Masami Hiramatsu <mhiramat@kernel.org> --- kernel/trace/trace_boot.c | 31 ++++++++++++---------------- --- kernel/trace/trace_events_hist.c | 9 ++------- 2 files changed, 14 insertions(+), 26 deletions(-)diff --git a/kernel/trace/trace_boot.c b/kernel/trace/trace_boot.c index 2f616cd926b0..8f40de349db1 100644 --- a/kernel/trace/trace_boot.c +++ b/kernel/trace/trace_boot.c@@ -133,38 +133,31 @@ trace_boot_add_kprobe_event(struct xbc_node*node, const char *event) #endif #ifdef CONFIG_HIST_TRIGGERS -extern int synth_event_run_command(const char *command); - static int __init trace_boot_add_synth_event(struct xbc_node *node, const char *event) { + struct dynevent_cmd cmd; struct xbc_node *anode; - char buf[MAX_BUF_LEN], *q; + char buf[MAX_BUF_LEN]; const char *p; - int len, delta, ret; + int ret; - len = ARRAY_SIZE(buf); - delta = snprintf(buf, len, "%s", event); - if (delta >= len) { - pr_err("Event name is too long: %s\n", event); - return -E2BIG; - } - len -= delta; q = buf + delta; + synth_event_cmd_init(&cmd, buf, MAX_BUF_LEN); + + ret = synth_event_gen_cmd_start(&cmd, event, NULL); + if (ret) + return ret; xbc_node_for_each_array_value(node, "fields", anode, p) { - delta = snprintf(q, len, " %s;", p); - if (delta >= len) { - pr_err("fields string is too long: %s\n", p); - return -E2BIG; - } - len -= delta; q += delta; + ret = synth_event_add_field_str(&cmd, p); + if (ret) + return ret; } - ret = synth_event_run_command(buf); + ret = synth_event_gen_cmd_end(&cmd); if (ret < 0) pr_err("Failed to add synthetic event: %s\n", buf); - return ret; } #elsediff --git a/kernel/trace/trace_events_hist.cb/kernel/trace/trace_events_hist.c index 5a910bb193e9..22cd7ecdfb92 100644--- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c@@ -1752,12 +1752,7 @@ static int create_or_delete_synth_event(intargc, char **argv) return ret == -ECANCELED ? -EINVAL : ret; } -int synth_event_run_command(const char *command) -{ - return trace_run_command(command, create_or_delete_synth_event); -} - -static int synth_event_run_cmd(struct dynevent_cmd *cmd) +static int synth_event_run_command(struct dynevent_cmd *cmd) { struct synth_event *se; int ret;@@ -1787,7 +1782,7 @@ static int synth_event_run_cmd(structdynevent_cmd *cmd) void synth_event_cmd_init(struct dynevent_cmd *cmd, char *buf, int maxlen) { dynevent_cmd_init(cmd, buf, maxlen, DYNEVENT_TYPE_SYNTH, - synth_event_run_cmd); + synth_event_run_command); } EXPORT_SYMBOL_GPL(synth_event_cmd_init);