PERFORCE change 164366 for review
Sylvestre Gallon
syl at FreeBSD.org
Sun Jun 14 18:31:13 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=164366
Change 164366 by syl at syl_atuin on 2009/06/14 18:31:10
- Remove current transfer from flying_list on TRANSFER_COMPLETE.
- Call libusb_transfer->callback on TRANSFER_COMPLETE.
Affected files ...
.. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.c#31 edit
.. //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10_io.c#11 edit
Differences ...
==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10.c#31 (text+ko) ====
@@ -680,22 +680,32 @@
static void
libusb10_proxy(struct libusb20_transfer *xfer)
{
+ struct usb_transfer *usb_backend;
+ libusb_transfer *usb_xfer;
+ libusb_context *ctx;
uint8_t status;
- libusb_transfer *usb_xfer;
+
+ usb_backend = (struct usb_transfer *) ((uint8_t *)xfer -
+ sizeof(struct usb_transfer));
pthread_mutex_lock(&libusb20_lock);
status = libusb20_tr_get_status(xfer);
- usb_xfer = (libusb_transfer *)libusb20_tr_get_priv_sc0(xfer);
+ usb_xfer = libusb20_tr_get_priv_sc0(xfer);
+ ctx = usb_xfer->dev_handle->dev->ctx;
switch (status) {
case LIBUSB20_TRANSFER_COMPLETED:
usb_xfer->actual_length += libusb20_tr_get_actual_length(xfer);
+ usb_xfer->callback(usb_xfer);
+
+ pthread_mutex_lock(&ctx->flying_transfers_lock);
+ LIST_DEL(&usb_backend->list);
+ pthread_mutex_unlock(&ctx->flying_transfers_lock);
break ;
case LIBUSB20_TRANSFER_START:
usb_xfer->actual_length = 0;
- switch (usb_xfer->type)
- {
+ switch (usb_xfer->type) {
case LIBUSB_TRANSFER_TYPE_CONTROL:
libusb20_tr_setup_control(xfer, usb_xfer->buffer,
(void *)(((uint8_t *) usb_xfer->buffer) +
==== //depot/projects/soc2009/syl_usb/src/lib/libusb/libusb10_io.c#11 (text+ko) ====
More information about the p4-projects
mailing list