zephyr/subsys/rtio/Kconfig
Yuval Peress dbb470ea7a rtio: Add a managed memory pool for reads
- 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>
2023-04-10 18:34:43 -04:00

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