1*53548ad3SPavan Nikhilesh /* SPDX-License-Identifier: BSD-3-Clause 2*53548ad3SPavan Nikhilesh * Copyright(c) 2017-2018 Intel Corporation. 3*53548ad3SPavan Nikhilesh * All rights reserved. 4*53548ad3SPavan Nikhilesh */ 5*53548ad3SPavan Nikhilesh 6*53548ad3SPavan Nikhilesh #ifndef __EVENT_TIMER_ADAPTER_PMD_H__ 7*53548ad3SPavan Nikhilesh #define __EVENT_TIMER_ADAPTER_PMD_H__ 8*53548ad3SPavan Nikhilesh 9*53548ad3SPavan Nikhilesh /** 10*53548ad3SPavan Nikhilesh * @file 11*53548ad3SPavan Nikhilesh * RTE Event Timer Adapter API (PMD Side) 12*53548ad3SPavan Nikhilesh * 13*53548ad3SPavan Nikhilesh * @note 14*53548ad3SPavan Nikhilesh * This file provides implementation helpers for internal use by PMDs. They 15*53548ad3SPavan Nikhilesh * are not intended to be exposed to applications and are not subject to ABI 16*53548ad3SPavan Nikhilesh * versioning. 17*53548ad3SPavan Nikhilesh * 18*53548ad3SPavan Nikhilesh */ 19*53548ad3SPavan Nikhilesh 20*53548ad3SPavan Nikhilesh #ifdef __cplusplus 21*53548ad3SPavan Nikhilesh extern "C" { 22*53548ad3SPavan Nikhilesh #endif 23*53548ad3SPavan Nikhilesh 24*53548ad3SPavan Nikhilesh #include "rte_event_timer_adapter.h" 25*53548ad3SPavan Nikhilesh 26*53548ad3SPavan Nikhilesh /* 27*53548ad3SPavan Nikhilesh * Definitions of functions exported by an event timer adapter implementation 28*53548ad3SPavan Nikhilesh * through *rte_event_timer_adapter_ops* structure supplied in the 29*53548ad3SPavan Nikhilesh * *rte_event_timer_adapter* structure associated with an event timer adapter. 30*53548ad3SPavan Nikhilesh */ 31*53548ad3SPavan Nikhilesh 32*53548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_init_t)( 33*53548ad3SPavan Nikhilesh struct rte_event_timer_adapter *adapter); 34*53548ad3SPavan Nikhilesh /**< @internal Event timer adapter implementation setup */ 35*53548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_uninit_t)( 36*53548ad3SPavan Nikhilesh struct rte_event_timer_adapter *adapter); 37*53548ad3SPavan Nikhilesh /**< @internal Event timer adapter implementation teardown */ 38*53548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_start_t)( 39*53548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter); 40*53548ad3SPavan Nikhilesh /**< @internal Start running event timer adapter */ 41*53548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stop_t)( 42*53548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter); 43*53548ad3SPavan Nikhilesh /**< @internal Stop running event timer adapter */ 44*53548ad3SPavan Nikhilesh typedef void (*rte_event_timer_adapter_get_info_t)( 45*53548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter, 46*53548ad3SPavan Nikhilesh struct rte_event_timer_adapter_info *adapter_info); 47*53548ad3SPavan Nikhilesh /**< @internal Get contextual information for event timer adapter */ 48*53548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stats_get_t)( 49*53548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter, 50*53548ad3SPavan Nikhilesh struct rte_event_timer_adapter_stats *stats); 51*53548ad3SPavan Nikhilesh /**< @internal Get statistics for event timer adapter */ 52*53548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stats_reset_t)( 53*53548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter); 54*53548ad3SPavan Nikhilesh /**< @internal Reset statistics for event timer adapter */ 55*53548ad3SPavan Nikhilesh 56*53548ad3SPavan Nikhilesh /** 57*53548ad3SPavan Nikhilesh * @internal Structure containing the functions exported by an event timer 58*53548ad3SPavan Nikhilesh * adapter implementation. 59*53548ad3SPavan Nikhilesh */ 60*53548ad3SPavan Nikhilesh struct event_timer_adapter_ops { 61*53548ad3SPavan Nikhilesh rte_event_timer_adapter_init_t init; /**< Set up adapter */ 62*53548ad3SPavan Nikhilesh rte_event_timer_adapter_uninit_t uninit;/**< Tear down adapter */ 63*53548ad3SPavan Nikhilesh rte_event_timer_adapter_start_t start; /**< Start adapter */ 64*53548ad3SPavan Nikhilesh rte_event_timer_adapter_stop_t stop; /**< Stop adapter */ 65*53548ad3SPavan Nikhilesh rte_event_timer_adapter_get_info_t get_info; 66*53548ad3SPavan Nikhilesh /**< Get info from driver */ 67*53548ad3SPavan Nikhilesh rte_event_timer_adapter_stats_get_t stats_get; 68*53548ad3SPavan Nikhilesh /**< Get adapter statistics */ 69*53548ad3SPavan Nikhilesh rte_event_timer_adapter_stats_reset_t stats_reset; 70*53548ad3SPavan Nikhilesh /**< Reset adapter statistics */ 71*53548ad3SPavan Nikhilesh rte_event_timer_arm_burst_t arm_burst; 72*53548ad3SPavan Nikhilesh /**< Arm one or more event timers */ 73*53548ad3SPavan Nikhilesh rte_event_timer_arm_tmo_tick_burst_t arm_tmo_tick_burst; 74*53548ad3SPavan Nikhilesh /**< Arm event timers with same expiration time */ 75*53548ad3SPavan Nikhilesh rte_event_timer_cancel_burst_t cancel_burst; 76*53548ad3SPavan Nikhilesh /**< Cancel one or more event timers */ 77*53548ad3SPavan Nikhilesh }; 78*53548ad3SPavan Nikhilesh 79*53548ad3SPavan Nikhilesh /** 80*53548ad3SPavan Nikhilesh * @internal Adapter data; structure to be placed in shared memory to be 81*53548ad3SPavan Nikhilesh * accessible by various processes in a multi-process configuration. 82*53548ad3SPavan Nikhilesh */ 83*53548ad3SPavan Nikhilesh struct rte_event_timer_adapter_data { 84*53548ad3SPavan Nikhilesh uint8_t id; 85*53548ad3SPavan Nikhilesh /**< Event timer adapter ID */ 86*53548ad3SPavan Nikhilesh uint8_t event_dev_id; 87*53548ad3SPavan Nikhilesh /**< Event device ID */ 88*53548ad3SPavan Nikhilesh uint32_t socket_id; 89*53548ad3SPavan Nikhilesh /**< Socket ID where memory is allocated */ 90*53548ad3SPavan Nikhilesh uint8_t event_port_id; 91*53548ad3SPavan Nikhilesh /**< Optional: event port ID used when the inbuilt port is absent */ 92*53548ad3SPavan Nikhilesh const struct rte_memzone *mz; 93*53548ad3SPavan Nikhilesh /**< Event timer adapter memzone pointer */ 94*53548ad3SPavan Nikhilesh struct rte_event_timer_adapter_conf conf; 95*53548ad3SPavan Nikhilesh /**< Configuration used to configure the adapter. */ 96*53548ad3SPavan Nikhilesh uint32_t caps; 97*53548ad3SPavan Nikhilesh /**< Adapter capabilities */ 98*53548ad3SPavan Nikhilesh void *adapter_priv; 99*53548ad3SPavan Nikhilesh /**< Timer adapter private data*/ 100*53548ad3SPavan Nikhilesh uint8_t service_inited; 101*53548ad3SPavan Nikhilesh /**< Service initialization state */ 102*53548ad3SPavan Nikhilesh uint32_t service_id; 103*53548ad3SPavan Nikhilesh /**< Service ID*/ 104*53548ad3SPavan Nikhilesh 105*53548ad3SPavan Nikhilesh RTE_STD_C11 106*53548ad3SPavan Nikhilesh uint8_t started : 1; 107*53548ad3SPavan Nikhilesh /**< Flag to indicate adapter started. */ 108*53548ad3SPavan Nikhilesh } __rte_cache_aligned; 109*53548ad3SPavan Nikhilesh 110*53548ad3SPavan Nikhilesh #ifdef __cplusplus 111*53548ad3SPavan Nikhilesh } 112*53548ad3SPavan Nikhilesh #endif 113*53548ad3SPavan Nikhilesh 114*53548ad3SPavan Nikhilesh #endif /* __EVENT_TIMER_ADAPTER_PMD_H__ */ 115