selftests: harness: Add "variant" and "self" to test metadata
authorThomas Weißschuh <thomas.weissschuh@linutronix.de>
Mon, 5 May 2025 15:15:29 +0000 (17:15 +0200)
committerThomas Weißschuh <linux@weissschuh.net>
Wed, 21 May 2025 13:32:36 +0000 (15:32 +0200)
To get rid of setjmp()/longjmp(), the variant and self need to be usable
from __bail().

Make them available from the test metadata.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
Acked-by: Shuah Khan <skhan@linuxfoundation.org>
Link: https://lore.kernel.org/r/20250505-nolibc-kselftest-harness-v4-11-ee4dd5257135@linutronix.de
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
tools/testing/selftests/kselftest_harness.h

index acb476093b74968ecb71180ade9e5852b22da170..088c875df91a58f8760749b6047b246fb2a7891f 100644 (file)
                                self = &self_private; \
                        } \
                } \
+               _metadata->variant = variant->data; \
+               _metadata->self = self; \
                if (setjmp(_metadata->env) == 0) { \
                        /* _metadata and potentially self are shared with all forks. */ \
                        child = fork(); \
@@ -926,6 +928,8 @@ struct __test_metadata {
        bool aborted;   /* stopped test due to failed ASSERT */
        bool *no_teardown; /* fixture needs teardown */
        jmp_buf env;    /* for exiting out of test early */
+       void *self;
+       const void *variant;
        struct __test_results *results;
        struct __test_metadata *prev, *next;
 };