genode/repos/libports
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
..
doc libports: update doc/libc.txt 2023-05-30 12:03:33 +02:00
include libc: select() based on poll() 2024-04-12 12:55:39 +02:00
lib import-openssl.mk: provide file named after api 2024-04-12 12:57:28 +02:00
ports mesa: generalize binder memory management 2024-02-28 16:32:23 +01:00
recipes usb: session renewal & new client API 2024-04-12 12:57:30 +02:00
run usb: session renewal & new client API 2024-04-12 12:57:30 +02:00
src usb: session renewal & new client API 2024-04-12 12:57:30 +02:00
README Update README files 2023-03-13 14:32:53 +01:00

This directory contains ports of 3rd-party libraries to Genode.


Usage
-----

The tool './tool/ports/prepare_port' in the toplevel directory automates the
task of downloading and preparing the 3rd-party source codes. One can select
individual ports that have to be prepared by specifying their base names
(without the version number) as command-line argument. For example, the
following command prepares both the C library and the Freetype library:
! ./tool/ports/prepare_port libc freetype

To compile and link against 3rd-party libraries of the 'libports' repository,
you have to include the repository into the build process by appending it to the
'REPOSITORIES' declaration of your '<build-dir>/etc/build.conf' file.


Under the hood
--------------

For each library, there is a file contained in the 'libports/ports/'
subdirectory. The file is named after the library and contains the
library-specific rules for downloading the source code and installing header
files.


How does 'libports' relate to the other repositories?
-----------------------------------------------------

Most libraries hosted in the 'libports' repository expect a complete C
library, which is provided via the 'libc' port. The libc, in turn, depends on
the 'os' repository for its back end.