2018-05-17 08:47:12

by Yisheng Xie

[permalink] [raw]
Subject: [PATCH] tracing: use match_string() to simplify the code

match_string() returns the index of an array for a matching string,
which can be used to simplify the code.

Signed-off-by: Yisheng Xie <[email protected]>
---
kernel/trace/trace.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 414d721..4bd653a 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -4395,8 +4395,7 @@ static int trace_set_options(struct trace_array *tr, char *option)
{
char *cmp;
int neg = 0;
- int ret = -ENODEV;
- int i;
+ int ret;
size_t orig_len = strlen(option);

cmp = strstrip(option);
@@ -4408,16 +4407,12 @@ static int trace_set_options(struct trace_array *tr, char *option)

mutex_lock(&trace_types_lock);

- for (i = 0; trace_options[i]; i++) {
- if (strcmp(cmp, trace_options[i]) == 0) {
- ret = set_tracer_flag(tr, 1 << i, !neg);
- break;
- }
- }
-
+ ret = match_string(trace_options, -1, cmp);
/* If no option could be set, test the specific tracer options */
- if (!trace_options[i])
+ if (ret < 0)
ret = set_tracer_option(tr, cmp, neg);
+ else
+ ret = set_tracer_flag(tr, 1 << ret, !neg);

mutex_unlock(&trace_types_lock);

--
1.7.12.4



2018-06-05 16:34:03

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH] tracing: use match_string() to simplify the code

On Thu, May 17, 2018 at 11:36 AM, Yisheng Xie <[email protected]> wrote:
> match_string() returns the index of an array for a matching string,
> which can be used to simplify the code.
>

FWIW,
Reviewed-by: Andy Shevchenko <[email protected]>

> Signed-off-by: Yisheng Xie <[email protected]>
> ---
> kernel/trace/trace.c | 15 +++++----------
> 1 file changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index 414d721..4bd653a 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -4395,8 +4395,7 @@ static int trace_set_options(struct trace_array *tr, char *option)
> {
> char *cmp;
> int neg = 0;
> - int ret = -ENODEV;
> - int i;
> + int ret;
> size_t orig_len = strlen(option);
>
> cmp = strstrip(option);
> @@ -4408,16 +4407,12 @@ static int trace_set_options(struct trace_array *tr, char *option)
>
> mutex_lock(&trace_types_lock);
>
> - for (i = 0; trace_options[i]; i++) {
> - if (strcmp(cmp, trace_options[i]) == 0) {
> - ret = set_tracer_flag(tr, 1 << i, !neg);
> - break;
> - }
> - }
> -
> + ret = match_string(trace_options, -1, cmp);
> /* If no option could be set, test the specific tracer options */
> - if (!trace_options[i])
> + if (ret < 0)
> ret = set_tracer_option(tr, cmp, neg);
> + else
> + ret = set_tracer_flag(tr, 1 << ret, !neg);
>
> mutex_unlock(&trace_types_lock);
>
> --
> 1.7.12.4
>



--
With Best Regards,
Andy Shevchenko

2018-06-05 20:21:19

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] tracing: use match_string() to simplify the code

On Tue, 5 Jun 2018 19:32:57 +0300
Andy Shevchenko <[email protected]> wrote:

> On Thu, May 17, 2018 at 11:36 AM, Yisheng Xie <[email protected]> wrote:
> > match_string() returns the index of an array for a matching string,
> > which can be used to simplify the code.
> >
>
> FWIW,
> Reviewed-by: Andy Shevchenko <[email protected]>

Thanks for the reminder, I was going to add this patch, but haven't
gotten to it.

-- Steve

>
> > Signed-off-by: Yisheng Xie <[email protected]>
> > ---
> > kernel/trace/trace.c | 15 +++++----------
> > 1 file changed, 5 insertions(+), 10 deletions(-)
> >
> > diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> > index 414d721..4bd653a 100644
> > --- a/kernel/trace/trace.c
> > +++ b/kernel/trace/trace.c
> > @@ -4395,8 +4395,7 @@ static int trace_set_options(struct trace_array *tr, char *option)
> > {
> > char *cmp;
> > int neg = 0;
> > - int ret = -ENODEV;
> > - int i;
> > + int ret;
> > size_t orig_len = strlen(option);
> >
> > cmp = strstrip(option);
> > @@ -4408,16 +4407,12 @@ static int trace_set_options(struct trace_array *tr, char *option)
> >
> > mutex_lock(&trace_types_lock);
> >
> > - for (i = 0; trace_options[i]; i++) {
> > - if (strcmp(cmp, trace_options[i]) == 0) {
> > - ret = set_tracer_flag(tr, 1 << i, !neg);
> > - break;
> > - }
> > - }
> > -
> > + ret = match_string(trace_options, -1, cmp);
> > /* If no option could be set, test the specific tracer options */
> > - if (!trace_options[i])
> > + if (ret < 0)
> > ret = set_tracer_option(tr, cmp, neg);
> > + else
> > + ret = set_tracer_flag(tr, 1 << ret, !neg);
> >
> > mutex_unlock(&trace_types_lock);
> >
> > --
> > 1.7.12.4
> >
>
>
>