genode/repos/os/include
Piotr Tworek 643747b912 os: Refactor VirtIO::Queue implementation.
The key changes in this patch are:
* Buffer allocation is moved into a separate Buffer_pool helper. The
  implementation of the buffer allocation strategy does not change.
  The helper allocates a single RAM dataspace and splits it in multiple,
  equally sized chunks.
* Management of main descriptor ring is enacapsulated in Descriptor_ring
  helper class.
* Use separate RAM dataspaces for descriptor rings and buffers.
  Previously both of them were packed into a single dataspace. This
  might have been more RAM efficient, but IMO it made the code uglier and
  harder to understand.
* All of the VirtIO::Queue members are now initialized on the class member
  initializer list. This is possible due to previously listed changes.
* Since all VirtIO::Queue members are initalized on member initalizer
  list, some additional ones can be marked as const, ex _avail, _used ring
  pointers.
* Move descriptor writing code into a common method used by both
  write_data and write_data_read_reply members. This avoids some code
  duplication between those methods.
* Get rid of request_irq argument that most public VirtIO::Queue methods
  accept. None of the existing drivers use it and I doubt this will
  change any time soon.
* Use Genode namespace by default in Virtio.

This patch also fixes at least one bug that I discovered while working
on VirtIO block device driver. Namely, when chaining descriptors only the
first descriptor in the chain should be exposed in the available ring.

Issue #4347
2021-12-17 15:04:48 +01:00
..
audio_in_session audio_in: fix compile errors when strict warnings are enabled 2021-10-14 11:02:11 +02:00
audio_out_session os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
blit os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
block os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
block_session os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
capture_session Capture session interface 2020-07-13 11:33:13 +02:00
decorator os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
event_session event_session: make Session_client::Batch abstract 2020-08-25 11:49:43 +02:00
file_system base: remove Cancelable_lock 2020-07-30 08:49:23 +02:00
file_system_session Replace Genode::strncpy by Genode::copy_cstring 2020-05-27 11:56:45 +02:00
framebuffer_session Change pixel format to 32 bits per pixel 2020-06-29 14:22:29 +02:00
genode_c_api os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
gpio os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
gpio_session base/os: remove deprecated APIs 2019-02-26 14:44:15 +01:00
gpu gpu: add information for etnaviv driver 2021-11-29 15:11:52 +01:00
gpu_session gpu: reflect CAP shortage during buffer management 2021-10-14 11:02:09 +02:00
gui_session Change pixel format to 32 bits per pixel 2020-06-29 14:22:29 +02:00
i2c_session os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
init Adaptation to init refactoring 2017-03-24 16:19:56 +01:00
input input: repeat events require valid codepoints 2019-11-19 14:23:54 +01:00
input_session base/os: remove deprecated APIs 2019-02-26 14:44:15 +01:00
ldso Adjust file headers to refer to the AGPLv3 2017-02-28 12:59:29 +01:00
loader_session Rename 'Nitpicker' namespace to 'Gui' 2020-06-22 09:39:40 +02:00
mixer os: avoid using deprecated APIs 2019-01-30 13:49:54 +01:00
net os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
nic base/cache.h: rename Cache_attribute to Cache 2021-04-20 12:10:31 +02:00
nic_session base/os: remove deprecated APIs 2019-02-26 14:44:15 +01:00
nitpicker_gfx os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
os os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
packet_stream_rx packet_stream_*: fix missing dissolve on exception 2019-11-19 14:42:22 +01:00
packet_stream_tx packet_stream_*: fix missing dissolve on exception 2019-11-19 14:42:22 +01:00
pin_control_session os: Pin_control and Pin_state session interfaces 2021-11-29 15:10:52 +01:00
pin_state_session os: Pin_control and Pin_state session interfaces 2021-11-29 15:10:52 +01:00
platform_device base/cache.h: rename Cache_attribute to Cache 2021-04-20 12:10:31 +02:00
platform_session os: introduce common platform driver for ARM 2020-05-27 11:56:46 +02:00
pointer os: avoid garbage warnings in app/painter 2019-01-07 12:25:45 +01:00
ram_fs os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
report_rom report_rom: versioning and explicit notification 2021-10-13 14:46:54 +02:00
report_session base/os: remove deprecated APIs 2019-02-26 14:44:15 +01:00
rtc_session rtc: extended session with set-signal 2019-08-21 12:37:01 +02:00
sandbox separate sandbox api from os 2021-06-25 11:41:45 +02:00
smbios os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
spec os: extend ARM Platform::Device constructor 2021-10-14 11:02:15 +02:00
terminal os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
terminal_session os: use Mutex/Blockade 2020-04-17 12:40:12 +02:00
trace os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
uart_session os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
uplink_session os: introduce new "Uplink" session 2021-01-25 13:48:09 +01:00
usb os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
usb_session usb_host: add support to flush EP transfers 2021-06-25 11:41:44 +02:00
util os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
vfs os: avoid implicit conversions 2021-12-17 15:04:45 +01:00
virtio os: Refactor VirtIO::Queue implementation. 2021-12-17 15:04:48 +01:00