- Introduce a new Kconfig to enable mempool in RTIO - Introduce a new RTIO_DEFINE_WITH_MEMPOOL to allocate an RTIO context with an associated memory pool. - Add a new sqe read function rtio_sqe_read_with_pool() for memory pool enabled RTIO contexts - Allow IODevs to allocate only the memory they need via rtio_sqe_rx_buf() - Allow the consumer to get the allocated buffer via rtio_cqe_get_mempool_buffer() - Consumers need to release the buffer via rtio_release_buffer() when processing is complete. Signed-off-by: Yuval Peress <peress@google.com>
55 lines
1.9 KiB
Plaintext
55 lines
1.9 KiB
Plaintext
# Copyright (c) 2022 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menuconfig RTIO
|
|
bool "RTIO"
|
|
|
|
if RTIO
|
|
|
|
config RTIO_EXECUTOR_SIMPLE
|
|
bool "A simple executor for RTIO"
|
|
default y
|
|
help
|
|
An simple RTIO executor that will execute a queue of requested I/O
|
|
operations as if they are a single chain of submission queue entries. This
|
|
does not support concurrent chains or submissions.
|
|
|
|
config RTIO_EXECUTOR_CONCURRENT
|
|
bool "A low cost concurrent executor for RTIO"
|
|
default y
|
|
help
|
|
A low memory cost RTIO executor that will execute a queue of requested I/O
|
|
with a fixed amount of concurrency using minimal memory overhead.
|
|
|
|
config RTIO_SUBMIT_SEM
|
|
bool "Use a semaphore when waiting for completions in rtio_submit"
|
|
help
|
|
When calling rtio_submit a semaphore is available to sleep the calling
|
|
thread for each completion queue event until the wait count is met. This
|
|
adds a small RAM overhead for a single semaphore. By default wait_for will
|
|
use polling on the completion queue with a k_yield() in between iterations.
|
|
|
|
config RTIO_CONSUME_SEM
|
|
bool "Use a semaphore when waiting for completions in rtio_cqe_consume_block"
|
|
help
|
|
When calling rtio_cqe_consume_block a semaphore is available to sleep the
|
|
calling thread for each completion queue event until the wait count is met.
|
|
This adds a small RAM overhead for a single semaphore. By default the call
|
|
will use polling on the completion queue with a k_yield() in between
|
|
iterations.
|
|
|
|
config RTIO_SYS_MEM_BLOCKS
|
|
bool "Include system memory blocks as an optional backing read memory pool"
|
|
select SYS_MEM_BLOCKS
|
|
help
|
|
Enable the RTIO_DEFINE_WITH_MEMPOOL macro which allows queueing reads
|
|
without a pre-allocated memory buffer. Instead the buffer will be taken
|
|
from the allocated memory pool associated with the RTIO context.
|
|
|
|
module = RTIO
|
|
module-str = RTIO
|
|
module-help = Sets log level for RTIO support
|
|
source "subsys/logging/Kconfig.template.log_config"
|
|
|
|
endif
|