commit cadb77d99e314e42c3eb02d016e9d90136ec6959 Author: Alexander Gordeev 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 --- a/libusb/io.c +++ b/libusb/io.c @@ -32,6 +32,7 @@ #include #endif #ifdef USBI_TIMERFD_AVAILABLE +#include #include #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);