lib/drmtest: Add igt_wait_helper
authorJeff McGee <jeff.mcgee@intel.com>
Wed, 29 Jan 2014 00:25:04 +0000 (18:25 -0600)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 6 Feb 2014 06:45:53 +0000 (07:45 +0100)
igt_wait_helper compliments igt_stop_helper and is used when helper
processes are expected to exit naturally.

Signed-off-by: Jeff McGee <jeff.mcgee@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
lib/drmtest.c
lib/drmtest.h

index 02496c5..f4a8600 100644 (file)
@@ -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;
index d42a6f7..f945a7e 100644 (file)
@@ -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))