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 #include "rte_event_timer_adapter.h" 20 21 /* 22 * Definitions of functions exported by an event timer adapter implementation 23 * through *rte_event_timer_adapter_ops* structure supplied in the 24 * *rte_event_timer_adapter* structure associated with an event timer adapter. 25 */ 26 27 typedef int (*rte_event_timer_adapter_init_t)( 28 struct rte_event_timer_adapter *adapter); 29 /**< @internal Event timer adapter implementation setup */ 30 typedef int (*rte_event_timer_adapter_uninit_t)( 31 struct rte_event_timer_adapter *adapter); 32 /**< @internal Event timer adapter implementation teardown */ 33 typedef int (*rte_event_timer_adapter_start_t)( 34 const struct rte_event_timer_adapter *adapter); 35 /**< @internal Start running event timer adapter */ 36 typedef int (*rte_event_timer_adapter_stop_t)( 37 const struct rte_event_timer_adapter *adapter); 38 /**< @internal Stop running event timer adapter */ 39 typedef void (*rte_event_timer_adapter_get_info_t)( 40 const struct rte_event_timer_adapter *adapter, 41 struct rte_event_timer_adapter_info *adapter_info); 42 /**< @internal Get contextual information for event timer adapter */ 43 typedef int (*rte_event_timer_adapter_stats_get_t)( 44 const struct rte_event_timer_adapter *adapter, 45 struct rte_event_timer_adapter_stats *stats); 46 /**< @internal Get statistics for event timer adapter */ 47 typedef int (*rte_event_timer_adapter_stats_reset_t)( 48 const struct rte_event_timer_adapter *adapter); 49 /**< @internal Reset statistics for event timer adapter */ 50 typedef int (*rte_event_timer_remaining_ticks_get_t)( 51 const struct rte_event_timer_adapter *adapter, 52 const struct rte_event_timer *evtim, 53 uint64_t *ticks_remaining); 54 /**< @internal Get remaining ticks for event timer */ 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 rte_event_timer_remaining_ticks_get_t remaining_ticks_get; 78 /**< Get remaining ticks for event timer */ 79 }; 80 81 /** 82 * @internal Adapter data; structure to be placed in shared memory to be 83 * accessible by various processes in a multi-process configuration. 84 */ 85 struct __rte_cache_aligned rte_event_timer_adapter_data { 86 uint8_t id; 87 /**< Event timer adapter ID */ 88 uint8_t event_dev_id; 89 /**< Event device ID */ 90 uint32_t socket_id; 91 /**< Socket ID where memory is allocated */ 92 uint8_t event_port_id; 93 /**< Optional: event port ID used when the inbuilt port is absent */ 94 const struct rte_memzone *mz; 95 /**< Event timer adapter memzone pointer */ 96 struct rte_event_timer_adapter_conf conf; 97 /**< Configuration used to configure the adapter. */ 98 uint32_t caps; 99 /**< Adapter capabilities */ 100 void *adapter_priv; 101 /**< Timer adapter private data*/ 102 uint8_t service_inited; 103 /**< Service initialization state */ 104 uint32_t service_id; 105 /**< Service ID*/ 106 107 uint8_t started : 1; 108 /**< Flag to indicate adapter started. */ 109 }; 110 111 #endif /* __EVENT_TIMER_ADAPTER_PMD_H__ */ 112