Messages in this thread | | | Subject | Re: [PATCH 12/16] dyndbg: add filter parameter to ddebug_parse_flags | From | Jason Baron <> | Date | Fri, 12 Jun 2020 17:05:47 -0400 |
| |
On 6/5/20 12:26 PM, Jim Cromie wrote: > Add a new *filter param to ddebug_parse_flags(), allowing it to > communicate optional filter flags back to its caller: ddebug_change() >
I think you meant ddebug_exec_query() here?
Thanks,
-Jason
> Also, ddebug_change doesn't alter any of its arguments, including its 2 > new ones; mods, filter. Say so by adding const modifier to them. > > Signed-off-by: Jim Cromie <jim.cromie@gmail.com> > --- > lib/dynamic_debug.c | 17 ++++++++++++----- > 1 file changed, 12 insertions(+), 5 deletions(-) > > diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c > index 2ecabfd3f432..32eb7d9545c7 100644 > --- a/lib/dynamic_debug.c > +++ b/lib/dynamic_debug.c > @@ -146,7 +146,8 @@ static void vpr_info_dq(const struct ddebug_query *query, const char *msg) > * logs the changes. Takes ddebug_lock. > */ > static int ddebug_change(const struct ddebug_query *query, > - struct flagsettings *mods) > + const struct flagsettings *mods, > + const struct flagsettings *filter) > { > int i; > struct ddebug_table *dt; > @@ -444,7 +445,10 @@ static int ddebug_read_flags(const char *str, struct flagsettings *f) > * flags fields of matched _ddebug's. Returns 0 on success > * or <0 on error. > */ > -static int ddebug_parse_flags(const char *str, struct flagsettings *mods) > + > +static int ddebug_parse_flags(const char *str, > + struct flagsettings *mods, > + struct flagsettings *filter) > { > int op; > > @@ -476,7 +480,9 @@ static int ddebug_parse_flags(const char *str, struct flagsettings *mods) > mods->flags = 0; > break; > } > - vpr_info("*flagsp=0x%x *maskp=0x%x\n", mods->flags, mods->mask); > + > + vpr_info("mods:flags=0x%x,mask=0x%x filter:flags=0x%x,mask=0x%x\n", > + mods->flags, mods->mask, filter->flags, filter->mask); > > return 0; > } > @@ -484,6 +490,7 @@ static int ddebug_parse_flags(const char *str, struct flagsettings *mods) > static int ddebug_exec_query(char *query_string, const char *modname) > { > struct flagsettings mods = {}; > + struct flagsettings filter = {}; > struct ddebug_query query; > #define MAXWORDS 9 > int nwords, nfound; > @@ -495,7 +502,7 @@ static int ddebug_exec_query(char *query_string, const char *modname) > return -EINVAL; > } > /* check flags 1st (last arg) so query is pairs of spec,val */ > - if (ddebug_parse_flags(words[nwords-1], &mods)) { > + if (ddebug_parse_flags(words[nwords-1], &mods, &filter)) { > pr_err("flags parse failed\n"); > return -EINVAL; > } > @@ -504,7 +511,7 @@ static int ddebug_exec_query(char *query_string, const char *modname) > return -EINVAL; > } > /* actually go and implement the change */ > - nfound = ddebug_change(&query, &mods); > + nfound = ddebug_change(&query, &mods, &filter); > vpr_info_dq(&query, nfound ? "applied" : "no-match"); > > return nfound; >
| |