New upstream version 18.08
[deb_dpdk.git] / lib / librte_eventdev / rte_event_timer_adapter_pmd.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017-2018 Intel Corporation.
3  * All rights reserved.
4  */
5
6 #ifndef __RTE_EVENT_TIMER_ADAPTER_PMD_H__
7 #define __RTE_EVENT_TIMER_ADAPTER_PMD_H__
8
9 /**
10  * @file
11  * RTE Event Timer Adapter API (PMD Side)
12  *
13  * @note
14  * This file provides implementation helpers for internal use by PMDs.  They
15  * are not intended to be exposed to applications and are not subject to ABI
16  * versioning.
17  *
18  */
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23
24 #include "rte_event_timer_adapter.h"
25
26 /*
27  * Definitions of functions exported by an event timer adapter implementation
28  * through *rte_event_timer_adapter_ops* structure supplied in the
29  * *rte_event_timer_adapter* structure associated with an event timer adapter.
30  */
31
32 typedef int (*rte_event_timer_adapter_init_t)(
33                 struct rte_event_timer_adapter *adapter);
34 /**< @internal Event timer adapter implementation setup */
35 typedef int (*rte_event_timer_adapter_uninit_t)(
36                 struct rte_event_timer_adapter *adapter);
37 /**< @internal Event timer adapter implementation teardown */
38 typedef int (*rte_event_timer_adapter_start_t)(
39                 const struct rte_event_timer_adapter *adapter);
40 /**< @internal Start running event timer adapter */
41 typedef int (*rte_event_timer_adapter_stop_t)(
42                 const struct rte_event_timer_adapter *adapter);
43 /**< @internal Stop running event timer adapter */
44 typedef void (*rte_event_timer_adapter_get_info_t)(
45                 const struct rte_event_timer_adapter *adapter,
46                 struct rte_event_timer_adapter_info *adapter_info);
47 /**< @internal Get contextual information for event timer adapter */
48 typedef int (*rte_event_timer_adapter_stats_get_t)(
49                 const struct rte_event_timer_adapter *adapter,
50                 struct rte_event_timer_adapter_stats *stats);
51 /**< @internal Get statistics for event timer adapter */
52 typedef int (*rte_event_timer_adapter_stats_reset_t)(
53                 const struct rte_event_timer_adapter *adapter);
54 /**< @internal Reset statistics for event timer adapter */
55
56 /**
57  * @internal Structure containing the functions exported by an event timer
58  * adapter implementation.
59  */
60 struct rte_event_timer_adapter_ops {
61         rte_event_timer_adapter_init_t          init;  /**< Set up adapter */
62         rte_event_timer_adapter_uninit_t        uninit;/**< Tear down adapter */
63         rte_event_timer_adapter_start_t         start; /**< Start adapter */
64         rte_event_timer_adapter_stop_t          stop;  /**< Stop adapter */
65         rte_event_timer_adapter_get_info_t      get_info;
66         /**< Get info from driver */
67         rte_event_timer_adapter_stats_get_t     stats_get;
68         /**< Get adapter statistics */
69         rte_event_timer_adapter_stats_reset_t   stats_reset;
70         /**< Reset adapter statistics */
71         rte_event_timer_arm_burst_t             arm_burst;
72         /**< Arm one or more event timers */
73         rte_event_timer_arm_tmo_tick_burst_t    arm_tmo_tick_burst;
74         /**< Arm event timers with same expiration time */
75         rte_event_timer_cancel_burst_t          cancel_burst;
76         /**< Cancel one or more event timers */
77 };
78
79 /**
80  * @internal Adapter data; structure to be placed in shared memory to be
81  * accessible by various processes in a multi-process configuration.
82  */
83 struct rte_event_timer_adapter_data {
84         uint8_t id;
85         /**< Event timer adapter ID */
86         uint8_t event_dev_id;
87         /**< Event device ID */
88         uint32_t socket_id;
89         /**< Socket ID where memory is allocated */
90         uint8_t event_port_id;
91         /**< Optional: event port ID used when the inbuilt port is absent */
92         const struct rte_memzone *mz;
93         /**< Event timer adapter memzone pointer */
94         struct rte_event_timer_adapter_conf conf;
95         /**< Configuration used to configure the adapter. */
96         uint32_t caps;
97         /**< Adapter capabilities */
98         void *adapter_priv;
99         /**< Timer adapter private data*/
100         uint8_t service_inited;
101         /**< Service initialization state */
102         uint32_t service_id;
103         /**< Service ID*/
104
105         RTE_STD_C11
106         uint8_t started : 1;
107         /**< Flag to indicate adapter started. */
108 } __rte_cache_aligned;
109
110 #ifdef __cplusplus
111 }
112 #endif
113
114 #endif /* __RTE_EVENT_TIMER_ADAPTER_PMD_H__ */