blob: 78fa8416b51604fb9976f372824cff5d47b6e262 [file]
/*
* Copyright (c) 2023 Intel Corporation.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/rtio/rtio.h>
/**
* @brief Executor handled submissions
*/
static void rtio_executor_submit_self(struct rtio_iodev_sqe *iodev_sqe)
{
const struct rtio_sqe *sqe = iodev_sqe->sqe;
switch (sqe->op) {
case RTIO_OP_CALLBACK:
sqe->callback(iodev_sqe->r, sqe, sqe->arg0);
rtio_iodev_sqe_ok(iodev_sqe, 0);
break;
default:
rtio_iodev_sqe_err(iodev_sqe, -EINVAL);
}
}
/**
* @brief Common executor handling of submit
*
* Some submissions may have NULL for the iodev pointer which implies
* an executor related operation such as a callback or flush. This
* common codepath avoids duplicating efforts for dealing with this.
*/
static void rtio_executor_submit(struct rtio_iodev_sqe *iodev_sqe)
{
if (iodev_sqe->sqe->iodev == NULL) {
rtio_executor_submit_self(iodev_sqe);
} else {
rtio_iodev_submit(iodev_sqe);
}
}