lkml.org 
[lkml]   [2022]   [Aug]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH nolibc 08/18] selftests/nolibc: exit with poweroff on success when getpid() == 1
    Date
    From: Willy Tarreau <w@1wt.eu>

    The idea is to ease automated testing under qemu. If the test succeeds
    while running as PID 1, indicating the system was booted with init=/test,
    let's just power off so that qemu can exit with a successful code. In
    other situations it will exit and provoke a panic, which may be caught
    for example with CONFIG_PVPANIC.

    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    ---
    tools/testing/selftests/nolibc/nolibc-test.c | 14 ++++++++++++++
    1 file changed, 14 insertions(+)

    diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c
    index b928f099431f7..291d96bfd7c12 100644
    --- a/tools/testing/selftests/nolibc/nolibc-test.c
    +++ b/tools/testing/selftests/nolibc/nolibc-test.c
    @@ -626,6 +626,20 @@ int main(int argc, char **argv, char **envp)
    }

    printf("Total number of errors: %d\n", ret);
    +
    + if (getpid() == 1) {
    + /* we're running as init, there's no other process on the
    + * system, thus likely started from a VM for a quick check.
    + * Exiting will provoke a kernel panic that may be reported
    + * as an error by Qemu or the hypervisor, while stopping
    + * cleanly will often be reported as a success. This allows
    + * to use the output of this program for bisecting kernels.
    + */
    + printf("Leaving init with final status: %d\n", !!ret);
    + if (ret == 0)
    + reboot(LINUX_REBOOT_CMD_POWER_OFF);
    + }
    +
    printf("Exiting with status %d\n", !!ret);
    return !!ret;
    }
    --
    2.31.1.189.g2e36527f23
    \
     
     \ /
      Last update: 2022-08-31 20:28    [W:4.129 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site