From f773c46b5d25c6cd8fab295cbf8e8a4184af1205 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Fri, 28 Jan 2022 15:54:26 +0100 Subject: [PATCH] libusb: adapt to changed packet stream blocking semantics Issue #4390 --- repos/libports/src/lib/libusb/genode_usb_raw.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/repos/libports/src/lib/libusb/genode_usb_raw.cc b/repos/libports/src/lib/libusb/genode_usb_raw.cc index 2c8d5ba3c6..6cb784d581 100644 --- a/repos/libports/src/lib/libusb/genode_usb_raw.cc +++ b/repos/libports/src/lib/libusb/genode_usb_raw.cc @@ -290,6 +290,9 @@ struct Usb_device usb_connection.source()->submit_packet(p); + while (!usb_connection.source()->ack_avail()) + genode_env().ep().wait_and_dispatch_one_io_signal(); + p = usb_connection.source()->get_acked_packet(); if (!p.succeded) @@ -318,6 +321,9 @@ struct Usb_device { Genode::Mutex::Guard guard(usb_packet_allocator_mutex()); + if (!usb_connection.source()->ready_to_submit()) + return false; + Usb::Packet_descriptor p = usb_connection.source()->alloc_packet(0); @@ -547,7 +553,7 @@ static int genode_set_interface_altsetting(struct libusb_device_handle* dev_hand Usb_device *usb_device = *(Usb_device**)dev_handle->dev->os_priv; return usb_device->altsetting(interface_number, altsetting) ? LIBUSB_SUCCESS - : LIBUSB_ERROR_OTHER; + : LIBUSB_ERROR_BUSY; }