[PATCH v2] tests: use nanosleep instead of usleep

Pekka Paalanen ppaalanen at gmail.com
Tue Sep 9 02:46:04 PDT 2014


On Tue,  9 Sep 2014 11:11:52 +0200
Marek Chalupa <mchqwerty at gmail.com> wrote:

> 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 at gmail.com>
> ---
>  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 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);
>  

Pushed.


Thanks,
pq


More information about the wayland-devel mailing list