2020-01-29 19:02:06

by Tom Zanussi

[permalink] [raw]
Subject: [PATCH v4 06/12] tracing: Change trace_boot to use synth_event interface

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 <[email protected]>
Acked-by: Masami Hiramatsu <[email protected]>
---
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;
}
#else
diff --git a/kernel/trace/trace_events_hist.c b/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(int argc, 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(struct dynevent_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);

--
2.14.1


2020-01-31 17:50:19

by Tom Zanussi

[permalink] [raw]
Subject: Re: [PATCH v4 06/12] tracing: Change trace_boot to use synth_event interface

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:
> 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 <[email protected]>
> Acked-by: Masami Hiramatsu <[email protected]>
> ---
> 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;
> }
> #else
> diff --git a/kernel/trace/trace_events_hist.c
> b/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(int
> argc, 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(struct
> dynevent_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);
>

2020-01-31 17:57:49

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v4 06/12] tracing: Change trace_boot to use synth_event interface

On Fri, 31 Jan 2020 11:49:01 -0600
Tom Zanussi <[email protected]> wrote:

> Hi Steve,
>
> It looks like you missed this patch when you pulled the other ones into
> for-next.
>

Ah, you're right! And my INBOX patchwork is informing me of it too (I
have it read my email, and when I post the 'for-next' patches, it
switches the status from "new" to "Under review", and this one is still
"new").

Thanks for letting me know. I'll apply it now.

-- Steve

2020-01-31 18:01:31

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v4 06/12] tracing: Change trace_boot to use synth_event interface

On Fri, 31 Jan 2020 12:55:39 -0500
Steven Rostedt <[email protected]> wrote:

> On Fri, 31 Jan 2020 11:49:01 -0600
> Tom Zanussi <[email protected]> wrote:
>
> > Hi Steve,
> >
> > It looks like you missed this patch when you pulled the other ones into
> > for-next.
> >
>
> Ah, you're right! And my INBOX patchwork is informing me of it too (I
> have it read my email, and when I post the 'for-next' patches, it
> switches the status from "new" to "Under review", and this one is still
> "new").
>
> Thanks for letting me know. I'll apply it now.

My latest has been pushed to ftrace/core.

-- Steve

2020-01-31 18:02:33

by Tom Zanussi

[permalink] [raw]
Subject: Re: [PATCH v4 06/12] tracing: Change trace_boot to use synth_event interface

On Fri, 2020-01-31 at 13:00 -0500, Steven Rostedt wrote:
> On Fri, 31 Jan 2020 12:55:39 -0500
> Steven Rostedt <[email protected]> wrote:
>
> > On Fri, 31 Jan 2020 11:49:01 -0600
> > Tom Zanussi <[email protected]> wrote:
> >
> > > Hi Steve,
> > >
> > > It looks like you missed this patch when you pulled the other
> > > ones into
> > > for-next.
> > >
> >
> > Ah, you're right! And my INBOX patchwork is informing me of it too
> > (I
> > have it read my email, and when I post the 'for-next' patches, it
> > switches the status from "new" to "Under review", and this one is
> > still
> > "new").
> >
> > Thanks for letting me know. I'll apply it now.
>
> My latest has been pushed to ftrace/core.

Thanks!

Tom

>
> -- Steve