genode/repos/os/include
Stefan Kalkowski 7ec08af6d9 usb: session renewal & new client API
Replace the USB session API by one that provides a devices ROM only,
which contains information about all USB devices available for this client,
as well as methods to acquire and release a single device.

The acquisition of an USB device returns the capability to a device session
that includes a packet stream buffer to communicate control transfers
in between the client and the USB host controller driver. Moreover,
additional methods to acquire and release an USB interface can be used.

The acquisition of an USB interface returns the capability to an interface
session that includes a packet stream buffer to communicate either
bulk, interrupt, or isochronous transfers in between the client and the
USB host controller driver.

This commit implements the API changes in behalf of the Genode C API's
USB server and client side. Addtionally, it provides Usb::Device,
Usb::Interface, and Usb::Endpoint utilities that can be used by native
C++ clients to use the new API and hide the sophisticated packet stream API.

The adaptations necessary target the following areas:

* lx_emul layer for USB host and client side
* Linux USB host controller driver port for PC
* Linux USB client ports: usb_hid_drv and usb_net_drv, additionally
  reduce the Linux tasks used inside these drivers
* Native usb_block_drv
* black_hole component
* Port of libusb, including smartcard and usb_webcam driver depending on it
* Port of Qemu XHCI model library, including vbox5 & vbox6 depending on it
* Adapt all run-scripts and drivers_interactive recipes to work
  with the new policy rules of the USB host controller driver

Fix genodelabs/genode#5021
2024-04-12 12:57:30 +02:00
..
audio_in_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
audio_out_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
blit os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
block Remove unneeded session_size check 2022-08-10 13:32:57 +02:00
block_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
capture_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
decorator list_model.h: rename 'apply_first' to 'with_first' 2023-11-28 14:24:24 +01:00
event_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
file_system file_system/util.h: remove packet-stream helpers 2022-02-15 10:11:10 +01:00
file_system_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
framebuffer_session os: make nitpicker compatible to C++20 2023-05-30 12:03:29 +02:00
genode_c_api usb: session renewal & new client API 2024-04-12 12:57:30 +02:00
gpio os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
gpio_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
gpu gpu/intel: GEN12+ 2022-11-17 08:00:36 +01:00
gpu_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
gui_session os: make nitpicker compatible to C++20 2023-05-30 12:03:29 +02:00
i2c_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
init Adaptation to init refactoring 2017-03-24 16:19:56 +01:00
input input/event.h: axis ids LX, LY, LT, RX, RY, and RT 2024-02-26 08:31:03 +01:00
input_session os: make nitpicker compatible to C++20 2023-05-30 12:03:29 +02:00
ldso Adjust file headers to refer to the AGPLv3 2017-02-28 12:59:29 +01:00
loader_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
mixer os: avoid using deprecated APIs 2019-01-30 13:49:54 +01:00
monitor monitor: add more debugging features 2023-08-23 13:46:37 +02:00
net os/include/net: add support for the DNS protocol 2023-11-28 14:24:23 +01:00
nic Remove unused Nic::Root implementation (nic/root.h) 2022-05-25 12:19:31 +02:00
nic_session os: replace enum by static constexpr (C++20) 2023-05-30 12:03:29 +02:00
nitpicker_gfx os: Don't use char as array subscript. 2022-02-15 10:23:58 +01:00
os vfs: support watch handlers on application signal level 2024-02-26 08:59:10 +01:00
packet_stream_rx os: remove blocking semantics from packet stream 2022-02-15 10:10:03 +01:00
packet_stream_tx os: remove blocking semantics from packet stream 2022-02-15 10:10:03 +01:00
pci mmio: upper-bounds checks 2024-02-26 08:59:07 +01:00
pin_control_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
pin_state_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
platform_session mmio: upper-bounds checks 2024-02-26 08:59:07 +01:00
play_session os: record-and-play session interfaces and mixer 2024-02-28 16:31:45 +01:00
pointer os: avoid garbage warnings in app/painter 2019-01-07 12:25:45 +01:00
ram_fs vfs: remove 'file_size' from read/write interfaces 2023-02-27 08:22:49 +01:00
record_session os: record-and-play session interfaces and mixer 2024-02-28 16:31:45 +01:00
report_rom Remove unneeded session_size check 2022-08-10 13:32:57 +02:00
report_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
rtc_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
sandbox monitor: apply affinity to monitored children 2023-09-29 12:17:45 +02:00
smbios os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
spec os: limit backtrace to stack of current thread 2024-02-26 08:31:02 +01:00
terminal os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
terminal_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
trace trace_buffer: fix check for empty buffer 2023-04-17 14:48:30 +02:00
uart_session Remove format strings from connection types 2023-03-13 14:32:37 +01:00
uplink_session os: define CAP_QUOTA as constexpr (C++20) 2023-05-30 12:03:29 +02:00
usb_session usb: session renewal & new client API 2024-04-12 12:57:30 +02:00
util monitor: add more debugging features 2023-08-23 13:46:37 +02:00
vfs vfs: fix dangling allocation in dir_file_system 2023-05-30 12:03:26 +02:00
virtio mmio: upper-bounds checks 2024-02-26 08:59:07 +01:00