[OpenWrt-Devel] [PATCH] hostapd: backport usleep patch

Rosen Penev rosenp at gmail.com
Mon Apr 6 22:17:59 EDT 2020


Optionally fixes compilation with uClibc-ng.

Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 package/network/services/hostapd/Makefile     |  2 +-
 .../services/hostapd/patches/800-usleep.patch | 58 +++++++++++++++++++
 2 files changed, 59 insertions(+), 1 deletion(-)
 create mode 100644 package/network/services/hostapd/patches/800-usleep.patch

diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
index 7472f5904e..b7fe1d8018 100644
--- a/package/network/services/hostapd/Makefile
+++ b/package/network/services/hostapd/Makefile
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=hostapd
-PKG_RELEASE:=8
+PKG_RELEASE:=9
 
 PKG_SOURCE_URL:=http://w1.fi/hostap.git
 PKG_SOURCE_PROTO:=git
diff --git a/package/network/services/hostapd/patches/800-usleep.patch b/package/network/services/hostapd/patches/800-usleep.patch
new file mode 100644
index 0000000000..8f7f7cfb5c
--- /dev/null
+++ b/package/network/services/hostapd/patches/800-usleep.patch
@@ -0,0 +1,58 @@
+From 39042d7f7c4997af55474ebe4513c81f00732837 Mon Sep 17 00:00:00 2001
+From: Rosen Penev <rosenp at gmail.com>
+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 <rosenp at gmail.com>
+---
+ src/utils/os_internal.c | 6 ++++++
+ src/utils/os_unix.c     | 6 ++++++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/src/utils/os_internal.c b/src/utils/os_internal.c
+index 474c8a3..feade6e 100644
+--- 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
+ }
+ 
+ 
+diff --git a/src/utils/os_unix.c b/src/utils/os_unix.c
+index 800c507..dd504f3 100644
+--- a/src/utils/os_unix.c
++++ b/src/utils/os_unix.c
+@@ -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
+ }
+ 
+ 
+
-- 
2.25.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list