LCOV - code coverage report
Current view: top level - zephyr/rtio - work.h Coverage Total Hit
Test: new.info Lines: 88.9 % 9 8
Test Date: 2025-09-05 16:43:28

            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 2.0-1