]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
os_sleep: Use nanosleep for POSIX versions 2008 and higher
authorRosen Penev <rosenp@gmail.com>
Sat, 24 Aug 2019 22:01:16 +0000 (15:01 -0700)
committerJouni Malinen <j@w1.fi>
Mon, 9 Sep 2019 13:45:40 +0000 (16:45 +0300)
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 <rosenp@gmail.com>
src/utils/os_internal.c
src/utils/os_unix.c

index 474c8a372205f667cedcd0065825f7223472ccf3..feade6ee64ddd1b23842710d74fba6ee501ba4ec 100644 (file)
 
 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
 }
 
 
index 800c50772d893852b231f09d873544f57a61397b..dd504f3ab4079d980a0c446bb7fccfa2dd2f7d15 100644 (file)
@@ -49,10 +49,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
 }