version 1.143, 2013/01/15 23:57:13 |
version 1.144, 2013/01/16 15:36:49 |
Line 323 usbd_transfer(usbd_xfer_handle xfer) |
|
Line 323 usbd_transfer(usbd_xfer_handle xfer) |
|
if (pipe->device->bus->use_polling) |
if (pipe->device->bus->use_polling) |
panic("usbd_transfer: not done"); |
panic("usbd_transfer: not done"); |
|
|
|
err = 0; |
if ((flags & USBD_SYNCHRONOUS_SIG) != 0) { |
if ((flags & USBD_SYNCHRONOUS_SIG) != 0) { |
if (pipe->device->bus->lock) |
if (pipe->device->bus->lock) |
cv_wait_sig(&xfer->cv, pipe->device->bus->lock); |
cv_wait_sig(&xfer->cv, pipe->device->bus->lock); |
else |
else |
tsleep(xfer, PZERO|PCATCH, "usbsyn", 0); |
err = tsleep(xfer, PZERO|PCATCH, "usbsyn", 0); |
} else { |
} else { |
if (pipe->device->bus->lock) |
if (pipe->device->bus->lock) |
cv_wait(&xfer->cv, pipe->device->bus->lock); |
cv_wait(&xfer->cv, pipe->device->bus->lock); |
else |
else |
tsleep(xfer, PRIBIO, "usbsyn", 0); |
err = tsleep(xfer, PRIBIO, "usbsyn", 0); |
} |
} |
|
if (err) |
|
break; |
} |
} |
usbd_unlock_pipe(pipe); |
usbd_unlock_pipe(pipe); |
return (xfer->status); |
return (xfer->status); |