Openwrt/package/libs/libusb/patches/001-timerfd.patch
2013-01-29 10:48:37 +00:00

34 lines
1.0 KiB
Diff

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
@@ -20,6 +20,7 @@
#include <config.h>
#include <errno.h>
+#include <fcntl.h>
#include <signal.h>
#include <stdint.h>
#include <stdlib.h>
@@ -1072,7 +1073,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);