diff options
Diffstat (limited to 'tools/regression/geom/geom.c')
-rw-r--r-- | tools/regression/geom/geom.c | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/tools/regression/geom/geom.c b/tools/regression/geom/geom.c index 1852cc4..1873e06 100644 --- a/tools/regression/geom/geom.c +++ b/tools/regression/geom/geom.c @@ -66,42 +66,70 @@ conff(char *file) free(s); } - - - -static int +static void * thread_up(void *ptr) { struct thread *tp = ptr; + int error; printf("Running %s\n", tp->name); + error = pthread_cond_init(&ptc_up, NULL); + if (error) + err(1, "pthread_cond_init(ptc_up)"); + error = pthread_mutex_init(&ptm_up, NULL); + if (error) + err(1, "pthread_mutex_init(ptm_up)"); + + error = pthread_mutex_lock(&ptm_up); + if (error) + err(1, "pthread_mutex_init(ptm_up)"); for (;;) { g_io_schedule_up(tp); - tsleep(&g_wait_up, 0, "up", 0); + error = pthread_cond_wait(&ptc_up, &ptm_up); } } -static int +static void * thread_down(void *ptr) { struct thread *tp = ptr; + int error; + printf("Running %s\n", tp->name); + error = pthread_cond_init(&ptc_down, NULL); + if (error) + err(1, "pthread_cond_init(ptc_down)"); + error = pthread_mutex_init(&ptm_down, NULL); + if (error) + err(1, "pthread_mutex_init(ptm_down)"); + error = pthread_mutex_lock(&ptm_down); + if (error) + err(1, "pthread_mutex_init(ptm_down)"); for (;;) { g_io_schedule_down(tp); - tsleep(&g_wait_down, 0, "down", 0); + error = pthread_cond_wait(&ptc_down, &ptm_down); } } -static int +static void * thread_event(void *ptr) { struct thread *tp = ptr; - /* nice(5); */ + int error; + printf("Running %s\n", tp->name); + error = pthread_cond_init(&ptc_event, NULL); + if (error) + err(1, "pthread_cond_init(ptc_event)"); + error = pthread_mutex_init(&ptm_event, NULL); + if (error) + err(1, "pthread_mutex_init(ptm_event)"); + error = pthread_mutex_lock(&ptm_event); + if (error) + err(1, "pthread_mutex_init(ptm_event)"); for (;;) { - usleep(100000); g_run_events(); - tsleep(&g_wait_event, 0, "events", 0); + error = pthread_cond_wait(&ptc_event, &ptm_event); } } |