Re: [PATCH v1 10/12] dyndbg: add processing of T(race) flag argument

From: Łukasz Bartosik
Date: Fri Nov 10 2023 - 13:27:51 EST


sob., 4 lis 2023 o 04:06 <jim.cromie@xxxxxxxxx> napisał(a):
>
> On Fri, Nov 3, 2023 at 7:10 AM Łukasz Bartosik <lb@xxxxxxxxxxxx> wrote:
> >
> > Add processing of argument provided to T(race) flag.
> > The argument value determines destination of debug logs:
> >
> > 0 - debug logs will be written to prdbg and devdbg trace events
> > [1..255] - debug logs will be written to trace instance
> >
> > A user can provide trace destination by folowing T flag with
> > ":" and trace destination value in range [0..255], for example:
> >
> > echo "module thunderbolt =pT:7" > /sys/kernel/debug/dynamic_debug/control
> > echo "module thunderbolt =lT:7,p" > /sys/kernel/debug/dynamic_debug/control
> >
> > When T flag with argument is followed by other flags then the next flag has
> > to be preceded with ",".
> >
>
> the trailing , seems punctuation heavy.
> Could we just stipulate that any :string (leading : trailing anything)
> be the last flag in the spec ?
> bare T flags are not constrained otherwise.
> seems fine as API-spec-by-error-codes.
>

I followed Jason's suggestion to use "," when T flag is not the last
flag and destination is explicitly provided for the T flag, like in
the example above
"echo "module thunderbolt =lT:7,p" > /sys/kernel/debug/dynamic_debug/control".

With "," we can have the following cases:
- when T is the last flag then it doesn't need to be followed by ","
even if destination is explicitly provided, for example "lpT:7",
- when T is not the last flag and destination is explicitly provided
then "," has to be used before next flag, for example "lT:7,p",
- when T is not the last flag and destination is not explicitly
provided then "," is not required, for example "lTp",

Jim, Jason, would you please come to terms if we want to use "," or
just assume that T has to be the last flag in the spec ?

>
>
>
> > When no value is provided trace destination defaults to 0, for example:
> >
> > echo "module thunderbolt =T" > /sys/kernel/debug/dynamic_debug/control
> > echo "module thunderbolt =lTp" > /sys/kernel/debug/dynamic_debug/control
>
> no colon after T means p is a flag, not a destination name

Yes, in this case p is a flag because when T is not followed
explicitly by destination then next character would be treated as
another flag.