From fd3fcbd3b3f12f878737d331d361de7eda0f579a Mon Sep 17 00:00:00 2001 From: Jeff McGee Date: Tue, 28 Jan 2014 18:25:04 -0600 Subject: [PATCH] lib/drmtest: Add igt_wait_helper igt_wait_helper compliments igt_stop_helper and is used when helper processes are expected to exit naturally. Signed-off-by: Jeff McGee Signed-off-by: Daniel Vetter --- lib/drmtest.c | 17 +++++++++++++++++ lib/drmtest.h | 1 + 2 files changed, 18 insertions(+) diff --git a/lib/drmtest.c b/lib/drmtest.c index 02496c5..f4a8600 100644 --- a/lib/drmtest.c +++ b/lib/drmtest.c @@ -1246,6 +1246,23 @@ void igt_stop_helper(struct igt_helper_process *proc) helper_process_count--; } +void igt_wait_helper(struct igt_helper_process *proc) +{ + int status; + + assert(proc->running); + + while (waitpid(proc->pid, &status, 0) == -1 && + errno == EINTR) + ; + igt_assert(WIFEXITED(status) && WEXITSTATUS(status) == 0); + + proc->running = false; + + helper_process_pids[proc->id] = -1; + helper_process_count--; +} + static void children_exit_handler(int sig) { int ret; diff --git a/lib/drmtest.h b/lib/drmtest.h index d42a6f7..f945a7e 100644 --- a/lib/drmtest.h +++ b/lib/drmtest.h @@ -290,6 +290,7 @@ struct igt_helper_process { }; bool __igt_fork_helper(struct igt_helper_process *proc); void igt_stop_helper(struct igt_helper_process *proc); +void igt_wait_helper(struct igt_helper_process *proc); #define igt_fork_helper(proc) \ for (; __igt_fork_helper(proc); exit(0)) -- 2.7.4