summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Dickens <christopher.a.dickens@gmail.com>2015-01-21 00:18:42 -0800
committerChris Dickens <christopher.a.dickens@gmail.com>2015-01-26 18:57:40 -0800
commit4b716a2acb75f51eb652333d0bf7ea8e92b8e907 (patch)
tree5c802c4c95bbfc8e5d3b2403050a170cfc3fa691
parent699db1543f85077c504ae41178a180d70e7ba88a (diff)
downloadlibusb-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.c79
-rw-r--r--libusb/version_nano.h2
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