summaryrefslogtreecommitdiff
path: root/package/libs/libusb/patches/001-timerfd.patch
blob: d14e3dcba7fc1bfd1b581d04b065db37a4a2bd0f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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>

--- a/libusb/io.c
+++ b/libusb/io.c
@@ -32,6 +32,7 @@
 #include <sys/time.h>
 #endif
 #ifdef USBI_TIMERFD_AVAILABLE
+#include <fcntl.h>
 #include <sys/timerfd.h>
 #endif
 
@@ -1141,7 +1142,7 @@ int usbi_io_init(struct libusb_context *
 
 #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);