mirror of
https://github.com/RPCS3/libusb.git
synced 2026-07-21 00:16:04 -04:00
POSIX: Move setting of pipes to non-blocking into usbi_pipe
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
+8
-4
@@ -2,6 +2,7 @@ all: libusb-1.0.la libusb-1.0.dll
|
||||
|
||||
lib_LTLIBRARIES = libusb-1.0.la
|
||||
|
||||
POSIX_POLL_SRC = os/poll_posix.c
|
||||
LINUX_USBFS_SRC = os/linux_usbfs.c
|
||||
DARWIN_USB_SRC = os/darwin_usb.c
|
||||
OPENBSD_USB_SRC = os/openbsd_usb.c
|
||||
@@ -10,26 +11,29 @@ WINCE_USB_SRC = os/wince_usb.c os/wince_usb.h
|
||||
|
||||
EXTRA_DIST = $(LINUX_USBFS_SRC) $(DARWIN_USB_SRC) $(OPENBSD_USB_SRC) \
|
||||
$(WINDOWS_USB_SRC) $(WINCE_USB_SRC) \
|
||||
$(POSIX_POLL_SRC) \
|
||||
os/threads_posix.c os/threads_windows.c \
|
||||
os/linux_udev.c os/linux_netlink.c
|
||||
|
||||
if OS_LINUX
|
||||
|
||||
if USE_UDEV
|
||||
OS_SRC = $(LINUX_USBFS_SRC) os/linux_udev.c
|
||||
OS_SRC = $(LINUX_USBFS_SRC) $(POSIX_POLL_SRC) \
|
||||
os/linux_udev.c
|
||||
else
|
||||
OS_SRC = $(LINUX_USBFS_SRC) os/linux_netlink.c
|
||||
OS_SRC = $(LINUX_USBFS_SRC) $(POSIX_POLL_SRC) \
|
||||
os/linux_netlink.c
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
if OS_DARWIN
|
||||
OS_SRC = $(DARWIN_USB_SRC)
|
||||
OS_SRC = $(DARWIN_USB_SRC) $(POSIX_POLL_SRC)
|
||||
AM_CFLAGS_EXT = -no-cpp-precomp
|
||||
endif
|
||||
|
||||
if OS_OPENBSD
|
||||
OS_SRC = $(OPENBSD_USB_SRC)
|
||||
OS_SRC = $(OPENBSD_USB_SRC) $(POSIX_POLL_SRC)
|
||||
endif
|
||||
|
||||
if OS_WINDOWS
|
||||
|
||||
@@ -25,9 +25,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#ifndef OS_WINDOWS
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
#include <signal.h>
|
||||
#endif
|
||||
@@ -1082,9 +1079,6 @@ int usbi_io_init(struct libusb_context *ctx)
|
||||
goto err;
|
||||
}
|
||||
|
||||
#ifndef OS_WINDOWS
|
||||
fcntl(ctx->hotplug_pipe[1], F_SETFD, O_NONBLOCK);
|
||||
#endif
|
||||
r = usbi_add_pollfd(ctx, ctx->hotplug_pipe[0], POLLIN);
|
||||
if (r < 0)
|
||||
goto err_close_hp_pipe;
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* poll_posix: poll compatibility wrapper for POSIX systems
|
||||
* Copyright © 2013 RealVNC Ltd.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "libusbi.h"
|
||||
|
||||
int usbi_pipe(int pipefd[2])
|
||||
{
|
||||
int ret = pipe(pipefd);
|
||||
if (ret != 0) {
|
||||
return ret;
|
||||
}
|
||||
ret = fcntl(pipefd[1], F_SETFD, O_NONBLOCK);
|
||||
if (ret != 0) {
|
||||
usbi_dbg("Failed to set non-blocking on new pipe: %d", errno);
|
||||
usbi_close(pipefd[0]);
|
||||
usbi_close(pipefd[1]);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -4,7 +4,8 @@
|
||||
#define usbi_write write
|
||||
#define usbi_read read
|
||||
#define usbi_close close
|
||||
#define usbi_pipe pipe
|
||||
#define usbi_poll poll
|
||||
|
||||
int usbi_pipe(int pipefd[2]);
|
||||
|
||||
#endif /* LIBUSB_POLL_POSIX_H */
|
||||
|
||||
@@ -1 +1 @@
|
||||
#define LIBUSB_NANO 10716
|
||||
#define LIBUSB_NANO 10717
|
||||
|
||||
Reference in New Issue
Block a user