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