123456789101112131415161718192021222324252627282930313233 |
- 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);
|