[packages] libusb-1.0: add a workaround for uClibc TFD_NONBLOCK / O_NONBLOCK mismatch...
authorJo-Philipp Wich <jow@openwrt.org>
Sat, 30 Apr 2011 13:04:49 +0000 (13:04 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sat, 30 Apr 2011 13:04:49 +0000 (13:04 +0000)
SVN-Revision: 26794

libs/libusb-1.0/patches/001-timerfd.patch [new file with mode: 0644]

diff --git a/libs/libusb-1.0/patches/001-timerfd.patch b/libs/libusb-1.0/patches/001-timerfd.patch
new file mode 100644 (file)
index 0000000..6b9fde9
--- /dev/null
@@ -0,0 +1,35 @@
+commit cadb77d99e314e42c3eb02d016e9d90136ec6959
+Author: Alexander Gordeev <lasaine@lvk.cs.msu.su>
+Date:   Thu Jan 27 06:39:16 2011 +0300
+
+    fix timerfd initialization
+    
+    sys/timerfd.h defines TFD_NONBLOCK as 0x800 but in kernel TFD_NONBLOCK
+    is an alias for O_NONBLOCK which is defined in arch-specific fcntl.h.
+    While it's still 0x800 for most of archs but for mips it's 0x80. So
+    timerfd_create(..., TFD_NONBLOCK) returns -EINVAL because of that. Fix
+    this by using O_NONBLOCK instead.
+    
+    Signed-off-by: Alexander Gordeev <lasaine@lvk.cs.msu.su>
+
+diff --git a/libusb/io.c b/libusb/io.c
+index 1379eb3..250b8dc 100644
+--- a/libusb/io.c
++++ b/libusb/io.c
+@@ -20,6 +20,7 @@
+ #include <config.h>
+ #include <errno.h>
++#include <fcntl.h>
+ #include <poll.h>
+ #include <pthread.h>
+ #include <signal.h>
+@@ -1025,7 +1026,7 @@ int usbi_io_init(struct libusb_context *ctx)
+ #ifdef USBI_TIMERFD_AVAILABLE
+       ctx->timerfd = timerfd_create(usbi_backend->get_timerfd_clockid(),
+-              TFD_NONBLOCK);
++              O_NONBLOCK);
+       if (ctx->timerfd >= 0) {
+               usbi_dbg("using timerfd for timeouts");
+               r = usbi_add_pollfd(ctx, ctx->timerfd, POLLIN);