summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Chalupa <mchqwerty@gmail.com>2014-09-09 11:11:52 +0200
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2014-09-09 12:43:38 +0300
commitd8377411663ff4c17d8752e1be1cf94d00f4dc54 (patch)
tree50ae71c8a294e18e634f202bf51f72c116b56a99
parent44bf13ba0f3b881c0c5055a7225591395bc80583 (diff)
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 <mchqwerty@gmail.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-rw-r--r--tests/display-test.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/tests/display-test.c b/tests/display-test.c
index 1289866..451cabd 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);