Zephyr API Documentation  3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches

RTIO SQE Flags. More...

Macros

#define RTIO_SQE_CHAINED   BIT(0)
 The next request in the queue should wait on this one.
 
#define RTIO_SQE_TRANSACTION   BIT(1)
 The next request in the queue is part of a transaction.
 
#define RTIO_SQE_MEMPOOL_BUFFER   BIT(2)
 The buffer should be allocated by the RTIO mempool.
 
#define RTIO_SQE_CANCELED   BIT(3)
 The SQE should not execute if possible.
 
#define RTIO_SQE_MULTISHOT   BIT(4)
 The SQE should continue producing CQEs until canceled.
 
#define RTIO_SQE_NO_RESPONSE   BIT(5)
 The SQE does not produce a CQE.
 

Detailed Description

RTIO SQE Flags.

Macro Definition Documentation

◆ RTIO_SQE_CANCELED

#define RTIO_SQE_CANCELED   BIT(3)

#include <zephyr/rtio/rtio.h>

The SQE should not execute if possible.

If possible (not yet executed), the SQE should be canceled by flagging it as failed and returning -ECANCELED as the result.

◆ RTIO_SQE_CHAINED

#define RTIO_SQE_CHAINED   BIT(0)

#include <zephyr/rtio/rtio.h>

The next request in the queue should wait on this one.

Chained SQEs are individual units of work describing patterns of ordering and failure cascading. A chained SQE must be started only after the one before it. They are given to the iodevs one after another.

◆ RTIO_SQE_MEMPOOL_BUFFER

#define RTIO_SQE_MEMPOOL_BUFFER   BIT(2)

#include <zephyr/rtio/rtio.h>

The buffer should be allocated by the RTIO mempool.

This flag can only exist if the CONFIG_RTIO_SYS_MEM_BLOCKS Kconfig was enabled and the RTIO context was created via the RTIO_DEFINE_WITH_MEMPOOL() macro. If set, the buffer associated with the entry was allocated by the internal memory pool and should be released as soon as it is no longer needed via a call to rtio_release_mempool().

◆ RTIO_SQE_MULTISHOT

#define RTIO_SQE_MULTISHOT   BIT(4)

#include <zephyr/rtio/rtio.h>

The SQE should continue producing CQEs until canceled.

This flag must exist along RTIO_SQE_MEMPOOL_BUFFER and signals that when a read is complete. It should be placed back in queue until canceled.

◆ RTIO_SQE_NO_RESPONSE

#define RTIO_SQE_NO_RESPONSE   BIT(5)

#include <zephyr/rtio/rtio.h>

The SQE does not produce a CQE.

◆ RTIO_SQE_TRANSACTION

#define RTIO_SQE_TRANSACTION   BIT(1)

#include <zephyr/rtio/rtio.h>

The next request in the queue is part of a transaction.

Transactional SQEs are sequential parts of a unit of work. Only the first transactional SQE is submitted to an iodev, the remaining SQEs are never individually submitted but instead considered to be part of the transaction to the single iodev. The first sqe in the sequence holds the iodev that will be used and the last holds the userdata that will be returned in a single completion on failure/success.