zephyr/doc/services
Tom Burdick 3d2ead38cb rtio: Real-Time Input/Output Stream
A DMA friendly Stream API for zephyr. Based on ideas from io_uring
and iio, a queue based API for I/O operations.

Provides a pair of fixed length ringbuffer backed queues for submitting
I/O requests and recieving I/O completions. The requests may be chained
together to ensure the next operation does not start until the current
one is complete.

Requests target an abstract rtio_iodev which is expected to wrap all
the hardware particulars of how to perform the operation. For example
with a SPI bus device, a description of what a read, and write mean
can be decided by the iodev wrapping a particular device
hanging off of a SPI controller.

The queue pair are submitted to an executor which may be a simple
inplace looping executor done in the callers execution context
(thread/stack) but other executors are expected. A threadpool executor
might for example allow for concurrent request chains to execute in
parallel. A DMA executor, in conjunction with DMA aware iodevs
would allow for hardware offloading of operations going so far as to
schedule with priority using hardware arbitration.

Both the iodev and executor are definable by a particular
SoC, meaning they can work in conjuction to perform IO operations
using a particular DMA controller or methodology if desired.

The application decides entirely how large the queues are, where
the buffers to read/write come from (some executors
may have particular demands!), and which executor to submit
requests to.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2022-06-28 13:53:13 -04:00
..
crypto doc: move crypto/random sections into os services 2022-04-07 16:35:19 +02:00
debugging debug: coredump: add xtensa intel adsp, support toolchains 2022-06-23 15:44:45 -04:00
device_mgmt doc/guides/device_mgmt/smp: Extend reset command with force option 2022-06-21 11:55:19 +02:00
file_system doc: move file system into os services 2022-04-07 16:35:19 +02:00
logging logging: Remove logging v1 from the logging 2022-06-16 10:51:15 -04:00
modbus doc: get rid of reference section 2022-04-07 16:35:19 +02:00
pm doc: pm: document system pm limitations 2022-05-06 11:33:10 +02:00
portability doc: Fix the layout of POSIX-related tables 2022-04-25 14:07:42 -04:00
resource_management doc: move resource management under services 2022-04-07 16:35:19 +02:00
rtio rtio: Real-Time Input/Output Stream 2022-06-28 13:53:13 -04:00
settings doc: settings: Fix typo 2022-05-18 10:54:59 +02:00
shell doc: Fix links to Zephyr include directory on Github 2022-04-21 18:35:16 -04:00
smf include: update documentation to use zephyr/ prefix 2022-04-21 07:40:54 -05:00
storage drivers: disk: Remove use of unused devicetree "label" property 2022-06-10 09:46:46 +02:00
task_wdt doc: move misc services into OS Service section 2022-04-07 16:35:19 +02:00
tfm doc: Fix spelling errors in .rst files 2022-04-19 11:48:26 +02:00
tracing tracing: add additional user tracing thread calls 2022-06-28 13:52:21 -04:00
usb doc: Fix links to Zephyr include directory on Github 2022-04-21 18:35:16 -04:00
virtualization doc: get rid of reference section 2022-04-07 16:35:19 +02:00
formatted_output.rst doc: move formatted output under os services 2022-04-07 16:35:19 +02:00
index.rst rtio: Real-Time Input/Output Stream 2022-06-28 13:53:13 -04:00
misc.rst doc: get rid of reference section 2022-04-07 16:35:19 +02:00
notify.rst doc: move notification services under os services 2022-04-07 16:35:19 +02:00