selftests: kselftest: Create ksft_print_dbg_msg()

Create ksft_print_dbg_msg() so testers can enable extra debug messages
when running a test with the flag -d.

Signed-off-by: André Almeida <andrealmeid@igalia.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
André Almeida 2025-09-17 18:21:40 -03:00 committed by Thomas Gleixner
parent 6b54082c3e
commit f2662ec26b
2 changed files with 23 additions and 4 deletions

View File

@ -54,6 +54,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdbool.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include <sys/utsname.h> #include <sys/utsname.h>
@ -104,6 +105,7 @@ struct ksft_count {
static struct ksft_count ksft_cnt; static struct ksft_count ksft_cnt;
static unsigned int ksft_plan; static unsigned int ksft_plan;
static bool ksft_debug_enabled;
static inline unsigned int ksft_test_num(void) static inline unsigned int ksft_test_num(void)
{ {
@ -175,6 +177,18 @@ static inline __printf(1, 2) void ksft_print_msg(const char *msg, ...)
va_end(args); va_end(args);
} }
static inline void ksft_print_dbg_msg(const char *msg, ...)
{
va_list args;
if (!ksft_debug_enabled)
return;
va_start(args, msg);
ksft_print_msg(msg, args);
va_end(args);
}
static inline void ksft_perror(const char *msg) static inline void ksft_perror(const char *msg)
{ {
ksft_print_msg("%s: %s (%d)\n", msg, strerror(errno), errno); ksft_print_msg("%s: %s (%d)\n", msg, strerror(errno), errno);

View File

@ -1091,7 +1091,7 @@ static int test_harness_argv_check(int argc, char **argv)
{ {
int opt; int opt;
while ((opt = getopt(argc, argv, "hlF:f:V:v:t:T:r:")) != -1) { while ((opt = getopt(argc, argv, "dhlF:f:V:v:t:T:r:")) != -1) {
switch (opt) { switch (opt) {
case 'f': case 'f':
case 'F': case 'F':
@ -1104,12 +1104,16 @@ static int test_harness_argv_check(int argc, char **argv)
case 'l': case 'l':
test_harness_list_tests(); test_harness_list_tests();
return KSFT_SKIP; return KSFT_SKIP;
case 'd':
ksft_debug_enabled = true;
break;
case 'h': case 'h':
default: default:
fprintf(stderr, fprintf(stderr,
"Usage: %s [-h|-l] [-t|-T|-v|-V|-f|-F|-r name]\n" "Usage: %s [-h|-l|-d] [-t|-T|-v|-V|-f|-F|-r name]\n"
"\t-h print help\n" "\t-h print help\n"
"\t-l list all tests\n" "\t-l list all tests\n"
"\t-d enable debug prints\n"
"\n" "\n"
"\t-t name include test\n" "\t-t name include test\n"
"\t-T name exclude test\n" "\t-T name exclude test\n"
@ -1142,8 +1146,9 @@ static bool test_enabled(int argc, char **argv,
int opt; int opt;
optind = 1; optind = 1;
while ((opt = getopt(argc, argv, "F:f:V:v:t:T:r:")) != -1) { while ((opt = getopt(argc, argv, "dF:f:V:v:t:T:r:")) != -1) {
has_positive |= islower(opt); if (opt != 'd')
has_positive |= islower(opt);
switch (tolower(opt)) { switch (tolower(opt)) {
case 't': case 't':