summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/drmtest.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/drmtest.c b/lib/drmtest.c
index 767c8dc83..77e8002e6 100644
--- a/lib/drmtest.c
+++ b/lib/drmtest.c
@@ -625,11 +625,18 @@ static void sig_handler(int i)
sig_stat++;
}
+static void signal_helper_exit_handler(int sig)
+{
+ drmtest_stop_signal_helper();
+}
+
void drmtest_fork_signal_helper(void)
{
pid_t pid;
sighandler_t oldsig;
+ drmtest_install_exit_handler(signal_helper_exit_handler);
+
signal(SIGUSR1, sig_handler);
oldsig = signal(SIGQUIT, SIG_DFL);
pid = fork();
@@ -644,8 +651,12 @@ void drmtest_fork_signal_helper(void)
void drmtest_stop_signal_helper(void)
{
- if (signal_helper != -1)
+ int exitcode;
+
+ if (signal_helper != -1) {
kill(signal_helper, SIGQUIT);
+ wait(&exitcode);
+ }
if (sig_stat)
fprintf(stdout, "signal handler called %llu times\n", sig_stat);