mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 06:24:53 +08:00
selftests/nolibc: exit with poweroff on success when getpid() == 1
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>
This commit is contained in:
parent
95bc989488
commit
f49896d7d9
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user