[LTP] [PATCH] lib: tst_kconfig: Add runtime checks

Petr Vorel pvorel@suse.cz
Fri Feb 6 09:23:03 CET 2026


> > > +static void runtime_check(struct tst_kconfig_var *var)
> > > +{
> > > +	size_t i;
> > > +
> > > +	for (i = 0; runtime_checks[i].config; i++) {
> > > +		if (strcmp(runtime_checks[i].config, var->id))
> > > +			continue;
> > > +
> > > +		tst_res(TDEBUG, "Running runtime check for '%s'", var->id);
> > This will not work since Li's change:
> > aa5a6fcdcd ("lib: suppress early TDEBUG output before context initialization")

> > @Li I'm not sure what "unless explicitly enabled" means, but I guess we cannot
> > simple enable it for the test library (following patch). I vote to either revert
> > aa5a6fcdcd or change it (effectively revert it, but keep doc and the rest of the
> > code).

> > I understand having the output in each test is not ideal:

> > utsname01.c:39: TDEBUG: mmap((nil), 64, PROT_READ | PROT_WRITE(3), 33, -1, 0)
> > utsname01.c:40: TDEBUG: mmap((nil), 64, PROT_READ | PROT_WRITE(3), 33, -1, 0)

> > but better more output code than no code.

> Well, I don't like that noisy logging style, that's why I did aa5a6fcdcd.

> Maybe can we add more levels of TDEBUG log to LTP:

>   -D0: no debug logs print
>   -D1: only generic logs print
>   -D2: more veroes logs include library debuginfo

> What do you think?

For the level we would need to track the level state.

Also, we now support
-D
LTP_ENABLE_DEBUG=y (or n to disable)

Now, user would have to always use '-D1' or '-D2' to get logging or not use
getopts. IMHO getopts does not support both '-D' (without value) and '-D1' (with
value).

IMHO that's why ssh supports multiple '-v', e.g. '-v -v -v' or '-vvv' instead of
-v2 or -v3).

Anyway I'd prefer solving this somehow in the code so that users don't have to
bother about log levels, but I have no idea how. Maybe yet another enum
tst_res_flags member? Because aa5a6fcdcd skipped messages, which are likely
useful when run by child process (the test), but not by library process. And I
want to print message which is always run by library process. Maybe to have some
#define in source code, which would force logging even for library process? (not
sure what will be needed more often).

But sure, this would work if there no other way to detect these 2 cases.

OT we have:

in tst_test.c:

	if (context->tdebug)
		tst_res(TINFO, "Restored metadata for PID %d", getpid());

=> shouldn't it use TDEBUG instead of TINFO?

Kind regards,
Petr


More information about the ltp mailing list