xref: /dpdk/lib/eventdev/event_timer_adapter_pmd.h (revision 719834a6849e1daf4a70ff7742bbcc3ae7e25607)
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 #include "rte_event_timer_adapter.h"
20 
21 /*
22  * Definitions of functions exported by an event timer adapter implementation
23  * through *rte_event_timer_adapter_ops* structure supplied in the
24  * *rte_event_timer_adapter* structure associated with an event timer adapter.
25  */
26 
27 typedef int (*rte_event_timer_adapter_init_t)(
28 		struct rte_event_timer_adapter *adapter);
29 /**< @internal Event timer adapter implementation setup */
30 typedef int (*rte_event_timer_adapter_uninit_t)(
31 		struct rte_event_timer_adapter *adapter);
32 /**< @internal Event timer adapter implementation teardown */
33 typedef int (*rte_event_timer_adapter_start_t)(
34 		const struct rte_event_timer_adapter *adapter);
35 /**< @internal Start running event timer adapter */
36 typedef int (*rte_event_timer_adapter_stop_t)(
37 		const struct rte_event_timer_adapter *adapter);
38 /**< @internal Stop running event timer adapter */
39 typedef void (*rte_event_timer_adapter_get_info_t)(
40 		const struct rte_event_timer_adapter *adapter,
41 		struct rte_event_timer_adapter_info *adapter_info);
42 /**< @internal Get contextual information for event timer adapter */
43 typedef int (*rte_event_timer_adapter_stats_get_t)(
44 		const struct rte_event_timer_adapter *adapter,
45 		struct rte_event_timer_adapter_stats *stats);
46 /**< @internal Get statistics for event timer adapter */
47 typedef int (*rte_event_timer_adapter_stats_reset_t)(
48 		const struct rte_event_timer_adapter *adapter);
49 /**< @internal Reset statistics for event timer adapter */
50 typedef int (*rte_event_timer_remaining_ticks_get_t)(
51 		const struct rte_event_timer_adapter *adapter,
52 		const struct rte_event_timer *evtim,
53 		uint64_t *ticks_remaining);
54 /**< @internal Get remaining ticks for event timer */
55 
56 /**
57  * @internal Structure containing the functions exported by an event timer
58  * adapter implementation.
59  */
60 struct 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 	rte_event_timer_remaining_ticks_get_t	remaining_ticks_get;
78 	/**< Get remaining ticks for event timer */
79 };
80 
81 /**
82  * @internal Adapter data; structure to be placed in shared memory to be
83  * accessible by various processes in a multi-process configuration.
84  */
85 struct __rte_cache_aligned rte_event_timer_adapter_data {
86 	uint8_t id;
87 	/**< Event timer adapter ID */
88 	uint8_t event_dev_id;
89 	/**< Event device ID */
90 	uint32_t socket_id;
91 	/**< Socket ID where memory is allocated */
92 	uint8_t event_port_id;
93 	/**< Optional: event port ID used when the inbuilt port is absent */
94 	const struct rte_memzone *mz;
95 	/**< Event timer adapter memzone pointer */
96 	struct rte_event_timer_adapter_conf conf;
97 	/**< Configuration used to configure the adapter. */
98 	uint32_t caps;
99 	/**< Adapter capabilities */
100 	void *adapter_priv;
101 	/**< Timer adapter private data*/
102 	uint8_t service_inited;
103 	/**< Service initialization state */
104 	uint32_t service_id;
105 	/**< Service ID*/
106 
107 	uint8_t started : 1;
108 	/**< Flag to indicate adapter started. */
109 };
110 
111 #endif /* __EVENT_TIMER_ADAPTER_PMD_H__ */
112