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 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 }; 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 /* __EVENT_TIMER_ADAPTER_PMD_H__ */ 115