acf88f4e9210aeb7def3832ca541e5380814d171
[dpdk.git] / lib / librte_port / rte_port_eventdev.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2019 Intel Corporation
3  */
4
5 #ifndef __INCLUDE_RTE_PORT_EVENTDEV_H__
6 #define __INCLUDE_RTE_PORT_EVENTDEV_H__
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12 #ifndef ARRAY_SIZE
13 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
14 #endif
15
16 /**
17  * @file
18  * RTE Port Eventdev Interface
19  *
20  * eventdev_reader: input port built on top of pre-initialized eventdev
21  * interface
22  * eventdev_writer: output port built on top of pre-initialized eventdev
23  * interface
24  *
25 **/
26
27 #include <stdint.h>
28 #include <rte_eventdev.h>
29
30 #include "rte_port.h"
31
32 /** Eventdev_reader port parameters */
33 struct rte_port_eventdev_reader_params {
34         /** Eventdev Device ID */
35         uint8_t eventdev_id;
36
37         /** Eventdev Port ID */
38         uint8_t port_id;
39 };
40
41 /** Eventdev_reader port operations. */
42 extern struct rte_port_in_ops rte_port_eventdev_reader_ops;
43
44 /** Eventdev_writer port parameters. */
45 struct rte_port_eventdev_writer_params {
46         /** Eventdev Device ID. */
47         uint8_t eventdev_id;
48
49         /** Eventdev Port ID. */
50         uint8_t port_id;
51
52         /** Eventdev Queue ID. */
53         uint8_t queue_id;
54
55         /** Burst size to eventdev interface. */
56         uint32_t enq_burst_sz;
57
58         /** Scheduler synchronization type (RTE_SCHED_TYPE_*)*/
59         uint8_t sched_type;
60
61         /** The type of eventdev enqueue operation - new/forward/release */
62         uint8_t evt_op;
63 };
64
65 /** Eventdev_writer port operations. */
66 extern struct rte_port_out_ops rte_port_eventdev_writer_ops;
67
68 /** Event_writer_nodrop port parameters. */
69 struct rte_port_eventdev_writer_nodrop_params {
70         /** Eventdev Device ID. */
71         uint8_t eventdev_id;
72
73         /** Eventdev Port ID. */
74         uint16_t port_id;
75
76         /** Eventdev Queue ID. */
77         uint16_t queue_id;
78
79         /** Burst size to eventdev interface. */
80         uint32_t enq_burst_sz;
81
82         /** Scheduler synchronization type (RTE_SCHED_TYPE_*)*/
83         uint8_t sched_type;
84
85         /** The type of eventdev enqueue operation - new/forward/release */
86         uint8_t evt_op;
87
88         /** Maximum number of retries, 0 for no limit. */
89         uint32_t n_retries;
90 };
91
92 /** Eventdev_writer_nodrop port operations. */
93 extern struct rte_port_out_ops rte_port_eventdev_writer_nodrop_ops;
94
95 #ifdef __cplusplus
96 }
97 #endif
98
99 #endif