1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2017-2018 Intel Corporation.
6 #ifndef __EVENT_TIMER_ADAPTER_PMD_H__
7 #define __EVENT_TIMER_ADAPTER_PMD_H__
11 * RTE Event Timer Adapter API (PMD Side)
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
24 #include "rte_event_timer_adapter.h"
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.
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 */
57 * @internal Structure containing the functions exported by an event timer
58 * adapter implementation.
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 */
80 * @internal Adapter data; structure to be placed in shared memory to be
81 * accessible by various processes in a multi-process configuration.
83 struct rte_event_timer_adapter_data {
85 /**< Event timer adapter ID */
87 /**< Event device 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. */
97 /**< Adapter capabilities */
99 /**< Timer adapter private data*/
100 uint8_t service_inited;
101 /**< Service initialization state */
107 /**< Flag to indicate adapter started. */
108 } __rte_cache_aligned;
114 #endif /* __EVENT_TIMER_ADAPTER_PMD_H__ */