diff options
author | Chris Dickens <christopher.a.dickens@gmail.com> | 2015-01-21 00:18:42 -0800 |
---|---|---|
committer | Chris Dickens <christopher.a.dickens@gmail.com> | 2015-01-26 18:57:40 -0800 |
commit | 4b716a2acb75f51eb652333d0bf7ea8e92b8e907 (patch) | |
tree | 5c802c4c95bbfc8e5d3b2403050a170cfc3fa691 | |
parent | 699db1543f85077c504ae41178a180d70e7ba88a (diff) | |
download | libusb-4b716a2acb75f51eb652333d0bf7ea8e92b8e907.tar.gz |
netbsd: Transition to use new transfer completion API
Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
-rw-r--r-- | libusb/os/netbsd_usb.c | 79 | ||||
-rw-r--r-- | libusb/version_nano.h | 2 |
2 files changed, 8 insertions, 73 deletions
diff --git a/libusb/os/netbsd_usb.c b/libusb/os/netbsd_usb.c index 0e45317..6804da8 100644 --- a/libusb/os/netbsd_usb.c +++ b/libusb/os/netbsd_usb.c @@ -41,7 +41,6 @@ struct device_priv { }; struct handle_priv { - int pipe[2]; /* for event notification */ int endpoints[USB_MAX_ENDPOINTS]; }; @@ -75,8 +74,7 @@ static void netbsd_destroy_device(struct libusb_device *); static int netbsd_submit_transfer(struct usbi_transfer *); static int netbsd_cancel_transfer(struct usbi_transfer *); static void netbsd_clear_transfer_priv(struct usbi_transfer *); -static int netbsd_handle_events(struct libusb_context *ctx, struct pollfd *, - nfds_t, int); +static int netbsd_handle_transfer_completion(struct usbi_transfer *); static int netbsd_clock_gettime(int, struct timespec *); /* @@ -126,8 +124,8 @@ const struct usbi_os_backend netbsd_backend = { netbsd_cancel_transfer, netbsd_clear_transfer_priv, - netbsd_handle_events, - NULL, /* handle_transfer_completion() */ + NULL, /* handle_events() */ + netbsd_handle_transfer_completion, netbsd_clock_gettime, sizeof(struct device_priv), @@ -224,10 +222,7 @@ netbsd_open(struct libusb_device_handle *handle) usbi_dbg("open %s: fd %d", dpriv->devnode, dpriv->fd); - if (pipe(hpriv->pipe) < 0) - return _errno_to_libusb(errno); - - return usbi_add_pollfd(HANDLE_CTX(handle), hpriv->pipe[0], POLLIN); + return (LIBUSB_SUCCESS); } void @@ -240,11 +235,6 @@ netbsd_close(struct libusb_device_handle *handle) close(dpriv->fd); dpriv->fd = -1; - - usbi_remove_pollfd(HANDLE_CTX(handle), hpriv->pipe[0]); - - close(hpriv->pipe[0]); - close(hpriv->pipe[1]); } int @@ -471,8 +461,7 @@ netbsd_submit_transfer(struct usbi_transfer *itransfer) if (err) return (err); - if (write(hpriv->pipe[1], &itransfer, sizeof(itransfer)) < 0) - return _errno_to_libusb(errno); + usbi_signal_transfer_completion(itransfer); return (LIBUSB_SUCCESS); } @@ -494,63 +483,9 @@ netbsd_clear_transfer_priv(struct usbi_transfer *itransfer) } int -netbsd_handle_events(struct libusb_context *ctx, struct pollfd *fds, nfds_t nfds, - int num_ready) +netbsd_handle_transfer_completion(struct usbi_transfer *itransfer) { - struct libusb_device_handle *handle; - struct handle_priv *hpriv = NULL; - struct usbi_transfer *itransfer; - struct pollfd *pollfd; - int i, err = 0; - - usbi_dbg(""); - - pthread_mutex_lock(&ctx->open_devs_lock); - for (i = 0; i < nfds && num_ready > 0; i++) { - pollfd = &fds[i]; - - if (!pollfd->revents) - continue; - - hpriv = NULL; - num_ready--; - list_for_each_entry(handle, &ctx->open_devs, list, - struct libusb_device_handle) { - hpriv = (struct handle_priv *)handle->os_priv; - - if (hpriv->pipe[0] == pollfd->fd) - break; - - hpriv = NULL; - } - - if (NULL == hpriv) { - usbi_dbg("fd %d is not an event pipe!", pollfd->fd); - err = ENOENT; - break; - } - - if (pollfd->revents & POLLERR) { - usbi_remove_pollfd(HANDLE_CTX(handle), hpriv->pipe[0]); - usbi_handle_disconnect(handle); - continue; - } - - if (read(hpriv->pipe[0], &itransfer, sizeof(itransfer)) < 0) { - err = errno; - break; - } - - if ((err = usbi_handle_transfer_completion(itransfer, - LIBUSB_TRANSFER_COMPLETED))) - break; - } - pthread_mutex_unlock(&ctx->open_devs_lock); - - if (err) - return _errno_to_libusb(err); - - return (LIBUSB_SUCCESS); + return usbi_handle_transfer_completion(itransfer, LIBUSB_TRANSFER_COMPLETED); } int diff --git a/libusb/version_nano.h b/libusb/version_nano.h index c5e60a2..5e0caf3 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h @@ -1 +1 @@ -#define LIBUSB_NANO 10955 +#define LIBUSB_NANO 10956 |