LCOV - code coverage report
Current view: top level - zephyr/rtio - work.h Hit Total Coverage
Test: new.info Lines: 8 9 88.9 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2024 Croxel Inc.
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_RTIO_WORKQ_H_
       8             : #define ZEPHYR_INCLUDE_RTIO_WORKQ_H_
       9             : 
      10             : #include <stdint.h>
      11             : #include <zephyr/device.h>
      12             : #include <zephyr/rtio/rtio.h>
      13             : #include <zephyr/sys/p4wq.h>
      14             : 
      15             : #ifdef __cplusplus
      16             : extern "C" {
      17             : #endif
      18             : 
      19             : /**
      20             :  * @brief Callback API to execute work operation.
      21             :  *
      22             :  * @param iodev_sqe Associated SQE operation.
      23             :  */
      24           1 : typedef void (*rtio_work_submit_t)(struct rtio_iodev_sqe *iodev_sqe);
      25             : 
      26             : /**
      27             :  * @brief RTIO Work request.
      28             :  *
      29             :  * This RTIO Work request to perform a work operation decoupled
      30             :  * from its submission in the RTIO work-queues.
      31             :  */
      32           1 : struct rtio_work_req {
      33             :         /** Work item used to submit unit of work. */
      34           1 :         struct k_p4wq_work work;
      35             : 
      36             :         /** Handle to IODEV SQE containing the operation.
      37             :          * This is filled inside @ref rtio_work_req_submit.
      38             :          */
      39           1 :         struct rtio_iodev_sqe *iodev_sqe;
      40             : 
      41             :         /** Callback handler where synchronous operation may be executed.
      42             :          * This is filled inside @ref rtio_work_req_submit.
      43             :          */
      44           1 :         rtio_work_submit_t handler;
      45             : };
      46             : 
      47             : /**
      48             :  * @brief Allocate item to perform an RTIO work request.
      49             :  *
      50             :  * @details This allocation utilizes its internal memory slab with
      51             :  * pre-allocated elements.
      52             :  *
      53             :  * @return Pointer to allocated item if successful.
      54             :  * @return NULL if allocation failed.
      55             :  */
      56           1 : struct rtio_work_req *rtio_work_req_alloc(void);
      57             : 
      58             : /**
      59             :  * @brief Submit RTIO work request.
      60             :  *
      61             :  * @param req Item to fill with request information.
      62             :  * @param iodev_sqe RTIO Operation information.
      63             :  * @param handler Callback to handler where work operation is performed.
      64             :  */
      65           1 : void rtio_work_req_submit(struct rtio_work_req *req,
      66             :                           struct rtio_iodev_sqe *iodev_sqe,
      67             :                           rtio_work_submit_t handler);
      68             : 
      69             : /**
      70             :  * @brief Obtain number of currently used items from the pre-allocated pool.
      71             :  *
      72             :  * @return Number of used items.
      73             :  */
      74           1 : uint32_t rtio_work_req_used_count_get(void);
      75             : 
      76             : #ifdef __cplusplus
      77             : }
      78             : #endif
      79             : 
      80             : #endif /* ZEPHYR_INCLUDE_RTIO_WORKQ_H_ */

Generated by: LCOV version 1.14