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 #ifdef __cplusplus 20 extern "C" { 21 #endif 22 23 #include "rte_event_timer_adapter.h" 24 25 /* 26 * Definitions of functions exported by an event timer adapter implementation 27 * through *rte_event_timer_adapter_ops* structure supplied in the 28 * *rte_event_timer_adapter* structure associated with an event timer adapter. 29 */ 30 31 typedef int (*rte_event_timer_adapter_init_t)( 32 struct rte_event_timer_adapter *adapter); 33 /**< @internal Event timer adapter implementation setup */ 34 typedef int (*rte_event_timer_adapter_uninit_t)( 35 struct rte_event_timer_adapter *adapter); 36 /**< @internal Event timer adapter implementation teardown */ 37 typedef int (*rte_event_timer_adapter_start_t)( 38 const struct rte_event_timer_adapter *adapter); 39 /**< @internal Start running event timer adapter */ 40 typedef int (*rte_event_timer_adapter_stop_t)( 41 const struct rte_event_timer_adapter *adapter); 42 /**< @internal Stop running event timer adapter */ 43 typedef void (*rte_event_timer_adapter_get_info_t)( 44 const struct rte_event_timer_adapter *adapter, 45 struct rte_event_timer_adapter_info *adapter_info); 46 /**< @internal Get contextual information for event timer adapter */ 47 typedef int (*rte_event_timer_adapter_stats_get_t)( 48 const struct rte_event_timer_adapter *adapter, 49 struct rte_event_timer_adapter_stats *stats); 50 /**< @internal Get statistics for event timer adapter */ 51 typedef int (*rte_event_timer_adapter_stats_reset_t)( 52 const struct rte_event_timer_adapter *adapter); 53 /**< @internal Reset statistics for event timer adapter */ 54 typedef int (*rte_event_timer_remaining_ticks_get_t)( 55 const struct rte_event_timer_adapter *adapter, 56 const struct rte_event_timer *evtim, 57 uint64_t *ticks_remaining); 58 /**< @internal Get remaining ticks for event timer */ 59 60 /** 61 * @internal Structure containing the functions exported by an event timer 62 * adapter implementation. 63 */ 64 struct event_timer_adapter_ops { 65 rte_event_timer_adapter_init_t init; /**< Set up adapter */ 66 rte_event_timer_adapter_uninit_t uninit;/**< Tear down adapter */ 67 rte_event_timer_adapter_start_t start; /**< Start adapter */ 68 rte_event_timer_adapter_stop_t stop; /**< Stop adapter */ 69 rte_event_timer_adapter_get_info_t get_info; 70 /**< Get info from driver */ 71 rte_event_timer_adapter_stats_get_t stats_get; 72 /**< Get adapter statistics */ 73 rte_event_timer_adapter_stats_reset_t stats_reset; 74 /**< Reset adapter statistics */ 75 rte_event_timer_arm_burst_t arm_burst; 76 /**< Arm one or more event timers */ 77 rte_event_timer_arm_tmo_tick_burst_t arm_tmo_tick_burst; 78 /**< Arm event timers with same expiration time */ 79 rte_event_timer_cancel_burst_t cancel_burst; 80 /**< Cancel one or more event timers */ 81 rte_event_timer_remaining_ticks_get_t remaining_ticks_get; 82 /**< Get remaining ticks for event timer */ 83 }; 84 85 /** 86 * @internal Adapter data; structure to be placed in shared memory to be 87 * accessible by various processes in a multi-process configuration. 88 */ 89 struct rte_event_timer_adapter_data { 90 uint8_t id; 91 /**< Event timer adapter ID */ 92 uint8_t event_dev_id; 93 /**< Event device ID */ 94 uint32_t socket_id; 95 /**< Socket ID where memory is allocated */ 96 uint8_t event_port_id; 97 /**< Optional: event port ID used when the inbuilt port is absent */ 98 const struct rte_memzone *mz; 99 /**< Event timer adapter memzone pointer */ 100 struct rte_event_timer_adapter_conf conf; 101 /**< Configuration used to configure the adapter. */ 102 uint32_t caps; 103 /**< Adapter capabilities */ 104 void *adapter_priv; 105 /**< Timer adapter private data*/ 106 uint8_t service_inited; 107 /**< Service initialization state */ 108 uint32_t service_id; 109 /**< Service ID*/ 110 111 uint8_t started : 1; 112 /**< Flag to indicate adapter started. */ 113 } __rte_cache_aligned; 114 115 #ifdef __cplusplus 116 } 117 #endif 118 119 #endif /* __EVENT_TIMER_ADAPTER_PMD_H__ */ 120