xref: /dpdk/lib/eventdev/event_timer_adapter_pmd.h (revision 3a80d7fb2ecdd6e8e48e56e3726b26980fa2a089)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017-2018 Intel Corporation.
3  * All rights reserved.
4  */
5 
6 #ifndef __EVENT_TIMER_ADAPTER_PMD_H__
7 #define __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 typedef int (*rte_event_timer_remaining_ticks_get_t)(
56 		const struct rte_event_timer_adapter *adapter,
57 		const struct rte_event_timer *evtim,
58 		uint64_t *ticks_remaining);
59 /**< @internal Get remaining ticks for event timer */
60 
61 /**
62  * @internal Structure containing the functions exported by an event timer
63  * adapter implementation.
64  */
65 struct event_timer_adapter_ops {
66 	rte_event_timer_adapter_init_t		init;  /**< Set up adapter */
67 	rte_event_timer_adapter_uninit_t	uninit;/**< Tear down adapter */
68 	rte_event_timer_adapter_start_t		start; /**< Start adapter */
69 	rte_event_timer_adapter_stop_t		stop;  /**< Stop adapter */
70 	rte_event_timer_adapter_get_info_t	get_info;
71 	/**< Get info from driver */
72 	rte_event_timer_adapter_stats_get_t	stats_get;
73 	/**< Get adapter statistics */
74 	rte_event_timer_adapter_stats_reset_t	stats_reset;
75 	/**< Reset adapter statistics */
76 	rte_event_timer_arm_burst_t		arm_burst;
77 	/**< Arm one or more event timers */
78 	rte_event_timer_arm_tmo_tick_burst_t	arm_tmo_tick_burst;
79 	/**< Arm event timers with same expiration time */
80 	rte_event_timer_cancel_burst_t		cancel_burst;
81 	/**< Cancel one or more event timers */
82 	rte_event_timer_remaining_ticks_get_t	remaining_ticks_get;
83 	/**< Get remaining ticks for event timer */
84 };
85 
86 /**
87  * @internal Adapter data; structure to be placed in shared memory to be
88  * accessible by various processes in a multi-process configuration.
89  */
90 struct rte_event_timer_adapter_data {
91 	uint8_t id;
92 	/**< Event timer adapter ID */
93 	uint8_t event_dev_id;
94 	/**< Event device ID */
95 	uint32_t socket_id;
96 	/**< Socket ID where memory is allocated */
97 	uint8_t event_port_id;
98 	/**< Optional: event port ID used when the inbuilt port is absent */
99 	const struct rte_memzone *mz;
100 	/**< Event timer adapter memzone pointer */
101 	struct rte_event_timer_adapter_conf conf;
102 	/**< Configuration used to configure the adapter. */
103 	uint32_t caps;
104 	/**< Adapter capabilities */
105 	void *adapter_priv;
106 	/**< Timer adapter private data*/
107 	uint8_t service_inited;
108 	/**< Service initialization state */
109 	uint32_t service_id;
110 	/**< Service ID*/
111 
112 	RTE_STD_C11
113 	uint8_t started : 1;
114 	/**< Flag to indicate adapter started. */
115 } __rte_cache_aligned;
116 
117 #ifdef __cplusplus
118 }
119 #endif
120 
121 #endif /* __EVENT_TIMER_ADAPTER_PMD_H__ */
122