From 39042d7f7c4997af55474ebe4513c81f00732837 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Sat, 24 Aug 2019 15:01:16 -0700 Subject: os_sleep: Use nanosleep for POSIX versions 2008 and higher uClibc-ng optionally disabled deprecated POSIX functions like usleep, causing compilation failures. This switches to nanosleep while retaining support for older libcs that do not support nanosleep. Signed-off-by: Rosen Penev --- src/utils/os_internal.c | 6 ++++++ src/utils/os_unix.c | 6 ++++++ 2 files changed, 12 insertions(+) --- a/src/utils/os_internal.c +++ b/src/utils/os_internal.c @@ -25,10 +25,16 @@ void os_sleep(os_time_t sec, os_time_t usec) { +#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L) + const struct timespec req = { sec, usec * 1000 }; + + nanosleep(&req, NULL); +#else if (sec) sleep(sec); if (usec) usleep(usec); +#endif } --- a/src/utils/os_unix.c +++ b/src/utils/os_unix.c @@ -50,10 +50,16 @@ struct os_alloc_trace { void os_sleep(os_time_t sec, os_time_t usec) { +#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L) + const struct timespec req = { sec, usec * 1000 }; + + nanosleep(&req, NULL); +#else if (sec) sleep(sec); if (usec) usleep(usec); +#endif }