mirror of
https://github.com/torvalds/linux.git
synced 2024-11-02 18:21:49 +00:00
selftests/powerpc: Put the test in a separate process group
Allows us to kill the test and any children it has spawned. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
0a6121cf33
commit
de506f73dd
@ -30,12 +30,15 @@ int run_test(int (test_function)(void), char *name)
|
||||
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
setpgid(0, 0);
|
||||
exit(test_function());
|
||||
} else if (pid == -1) {
|
||||
perror("fork");
|
||||
return 1;
|
||||
}
|
||||
|
||||
setpgid(pid, pid);
|
||||
|
||||
/* Wake us up in timeout seconds */
|
||||
alarm(TIMEOUT);
|
||||
terminated = false;
|
||||
@ -50,17 +53,20 @@ wait:
|
||||
|
||||
if (terminated) {
|
||||
printf("!! force killing %s\n", name);
|
||||
kill(pid, SIGKILL);
|
||||
kill(-pid, SIGKILL);
|
||||
return 1;
|
||||
} else {
|
||||
printf("!! killing %s\n", name);
|
||||
kill(pid, SIGTERM);
|
||||
kill(-pid, SIGTERM);
|
||||
terminated = true;
|
||||
alarm(KILL_TIMEOUT);
|
||||
goto wait;
|
||||
}
|
||||
}
|
||||
|
||||
/* Kill anything else in the process group that is still running */
|
||||
kill(-pid, SIGTERM);
|
||||
|
||||
if (WIFEXITED(status))
|
||||
status = WEXITSTATUS(status);
|
||||
else {
|
||||
|
Loading…
Reference in New Issue
Block a user