From d8377411663ff4c17d8752e1be1cf94d00f4dc54 Mon Sep 17 00:00:00 2001 From: Marek Chalupa Date: Tue, 9 Sep 2014 11:11:52 +0200 Subject: [PATCH] tests: use nanosleep instead of usleep man usleep says that bahaviour of using usleep with SIGALRM signal is unspecified. So create our own usleep that calls nanosleep instead. Signed-off-by: Marek Chalupa Reviewed-by: Pekka Paalanen --- tests/display-test.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/tests/display-test.c b/tests/display-test.c index 1289866f..451cabd8 100644 --- a/tests/display-test.c +++ b/tests/display-test.c @@ -333,6 +333,21 @@ register_reading(struct wl_display *display) assert(wl_display_flush(display) >= 0); } +#define USEC_TO_NSEC(n) (1000 * (n)) + +/* since we are using alarm() and SIGABRT, we can not + * use usleep function (see 'man usleep') */ +static void +test_usleep(useconds_t usec) +{ + struct timespec ts = { + .tv_sec = 0, + .tv_nsec = USEC_TO_NSEC(usec) + }; + + assert(nanosleep(&ts, NULL) == 0); +} + /* create thread that will call prepare+read so that * it will block */ static pthread_t @@ -349,8 +364,8 @@ create_thread(struct client *c, void *(*func)(void*)) * so call usleep once again after the loop ends - it should * be sufficient... */ while (c->display_stopped == 0) - usleep(500); - usleep(10000); + test_usleep(500); + test_usleep(10000); return thread; } @@ -517,8 +532,8 @@ threading_read_after_error(void) /* make sure thread is sleeping */ while (c->display_stopped == 0) - usleep(500); - usleep(10000); + test_usleep(500); + test_usleep(10000); assert(wl_display_read_events(c->wl_display) == -1);