153548ad3SPavan Nikhilesh /* SPDX-License-Identifier: BSD-3-Clause 253548ad3SPavan Nikhilesh * Copyright(c) 2017-2018 Intel Corporation. 353548ad3SPavan Nikhilesh * All rights reserved. 453548ad3SPavan Nikhilesh */ 553548ad3SPavan Nikhilesh 653548ad3SPavan Nikhilesh #ifndef __EVENT_TIMER_ADAPTER_PMD_H__ 753548ad3SPavan Nikhilesh #define __EVENT_TIMER_ADAPTER_PMD_H__ 853548ad3SPavan Nikhilesh 953548ad3SPavan Nikhilesh /** 1053548ad3SPavan Nikhilesh * @file 1153548ad3SPavan Nikhilesh * RTE Event Timer Adapter API (PMD Side) 1253548ad3SPavan Nikhilesh * 1353548ad3SPavan Nikhilesh * @note 1453548ad3SPavan Nikhilesh * This file provides implementation helpers for internal use by PMDs. They 1553548ad3SPavan Nikhilesh * are not intended to be exposed to applications and are not subject to ABI 1653548ad3SPavan Nikhilesh * versioning. 1753548ad3SPavan Nikhilesh */ 1853548ad3SPavan Nikhilesh 1953548ad3SPavan Nikhilesh #ifdef __cplusplus 2053548ad3SPavan Nikhilesh extern "C" { 2153548ad3SPavan Nikhilesh #endif 2253548ad3SPavan Nikhilesh 2353548ad3SPavan Nikhilesh #include "rte_event_timer_adapter.h" 2453548ad3SPavan Nikhilesh 2553548ad3SPavan Nikhilesh /* 2653548ad3SPavan Nikhilesh * Definitions of functions exported by an event timer adapter implementation 2753548ad3SPavan Nikhilesh * through *rte_event_timer_adapter_ops* structure supplied in the 2853548ad3SPavan Nikhilesh * *rte_event_timer_adapter* structure associated with an event timer adapter. 2953548ad3SPavan Nikhilesh */ 3053548ad3SPavan Nikhilesh 3153548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_init_t)( 3253548ad3SPavan Nikhilesh struct rte_event_timer_adapter *adapter); 3353548ad3SPavan Nikhilesh /**< @internal Event timer adapter implementation setup */ 3453548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_uninit_t)( 3553548ad3SPavan Nikhilesh struct rte_event_timer_adapter *adapter); 3653548ad3SPavan Nikhilesh /**< @internal Event timer adapter implementation teardown */ 3753548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_start_t)( 3853548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter); 3953548ad3SPavan Nikhilesh /**< @internal Start running event timer adapter */ 4053548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stop_t)( 4153548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter); 4253548ad3SPavan Nikhilesh /**< @internal Stop running event timer adapter */ 4353548ad3SPavan Nikhilesh typedef void (*rte_event_timer_adapter_get_info_t)( 4453548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter, 4553548ad3SPavan Nikhilesh struct rte_event_timer_adapter_info *adapter_info); 4653548ad3SPavan Nikhilesh /**< @internal Get contextual information for event timer adapter */ 4753548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stats_get_t)( 4853548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter, 4953548ad3SPavan Nikhilesh struct rte_event_timer_adapter_stats *stats); 5053548ad3SPavan Nikhilesh /**< @internal Get statistics for event timer adapter */ 5153548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stats_reset_t)( 5253548ad3SPavan Nikhilesh const struct rte_event_timer_adapter *adapter); 5353548ad3SPavan Nikhilesh /**< @internal Reset statistics for event timer adapter */ 540727ff34SErik Gabriel Carrillo typedef int (*rte_event_timer_remaining_ticks_get_t)( 550727ff34SErik Gabriel Carrillo const struct rte_event_timer_adapter *adapter, 560727ff34SErik Gabriel Carrillo const struct rte_event_timer *evtim, 570727ff34SErik Gabriel Carrillo uint64_t *ticks_remaining); 580727ff34SErik Gabriel Carrillo /**< @internal Get remaining ticks for event timer */ 5953548ad3SPavan Nikhilesh 6053548ad3SPavan Nikhilesh /** 6153548ad3SPavan Nikhilesh * @internal Structure containing the functions exported by an event timer 6253548ad3SPavan Nikhilesh * adapter implementation. 6353548ad3SPavan Nikhilesh */ 6453548ad3SPavan Nikhilesh struct event_timer_adapter_ops { 6553548ad3SPavan Nikhilesh rte_event_timer_adapter_init_t init; /**< Set up adapter */ 6653548ad3SPavan Nikhilesh rte_event_timer_adapter_uninit_t uninit;/**< Tear down adapter */ 6753548ad3SPavan Nikhilesh rte_event_timer_adapter_start_t start; /**< Start adapter */ 6853548ad3SPavan Nikhilesh rte_event_timer_adapter_stop_t stop; /**< Stop adapter */ 6953548ad3SPavan Nikhilesh rte_event_timer_adapter_get_info_t get_info; 7053548ad3SPavan Nikhilesh /**< Get info from driver */ 7153548ad3SPavan Nikhilesh rte_event_timer_adapter_stats_get_t stats_get; 7253548ad3SPavan Nikhilesh /**< Get adapter statistics */ 7353548ad3SPavan Nikhilesh rte_event_timer_adapter_stats_reset_t stats_reset; 7453548ad3SPavan Nikhilesh /**< Reset adapter statistics */ 7553548ad3SPavan Nikhilesh rte_event_timer_arm_burst_t arm_burst; 7653548ad3SPavan Nikhilesh /**< Arm one or more event timers */ 7753548ad3SPavan Nikhilesh rte_event_timer_arm_tmo_tick_burst_t arm_tmo_tick_burst; 7853548ad3SPavan Nikhilesh /**< Arm event timers with same expiration time */ 7953548ad3SPavan Nikhilesh rte_event_timer_cancel_burst_t cancel_burst; 8053548ad3SPavan Nikhilesh /**< Cancel one or more event timers */ 810727ff34SErik Gabriel Carrillo rte_event_timer_remaining_ticks_get_t remaining_ticks_get; 820727ff34SErik Gabriel Carrillo /**< Get remaining ticks for event timer */ 8353548ad3SPavan Nikhilesh }; 8453548ad3SPavan Nikhilesh 8553548ad3SPavan Nikhilesh /** 8653548ad3SPavan Nikhilesh * @internal Adapter data; structure to be placed in shared memory to be 8753548ad3SPavan Nikhilesh * accessible by various processes in a multi-process configuration. 8853548ad3SPavan Nikhilesh */ 89*c6552d9aSTyler Retzlaff struct __rte_cache_aligned rte_event_timer_adapter_data { 9053548ad3SPavan Nikhilesh uint8_t id; 9153548ad3SPavan Nikhilesh /**< Event timer adapter ID */ 9253548ad3SPavan Nikhilesh uint8_t event_dev_id; 9353548ad3SPavan Nikhilesh /**< Event device ID */ 9453548ad3SPavan Nikhilesh uint32_t socket_id; 9553548ad3SPavan Nikhilesh /**< Socket ID where memory is allocated */ 9653548ad3SPavan Nikhilesh uint8_t event_port_id; 9753548ad3SPavan Nikhilesh /**< Optional: event port ID used when the inbuilt port is absent */ 9853548ad3SPavan Nikhilesh const struct rte_memzone *mz; 9953548ad3SPavan Nikhilesh /**< Event timer adapter memzone pointer */ 10053548ad3SPavan Nikhilesh struct rte_event_timer_adapter_conf conf; 10153548ad3SPavan Nikhilesh /**< Configuration used to configure the adapter. */ 10253548ad3SPavan Nikhilesh uint32_t caps; 10353548ad3SPavan Nikhilesh /**< Adapter capabilities */ 10453548ad3SPavan Nikhilesh void *adapter_priv; 10553548ad3SPavan Nikhilesh /**< Timer adapter private data*/ 10653548ad3SPavan Nikhilesh uint8_t service_inited; 10753548ad3SPavan Nikhilesh /**< Service initialization state */ 10853548ad3SPavan Nikhilesh uint32_t service_id; 10953548ad3SPavan Nikhilesh /**< Service ID*/ 11053548ad3SPavan Nikhilesh 11153548ad3SPavan Nikhilesh uint8_t started : 1; 11253548ad3SPavan Nikhilesh /**< Flag to indicate adapter started. */ 113*c6552d9aSTyler Retzlaff }; 11453548ad3SPavan Nikhilesh 11553548ad3SPavan Nikhilesh #ifdef __cplusplus 11653548ad3SPavan Nikhilesh } 11753548ad3SPavan Nikhilesh #endif 11853548ad3SPavan Nikhilesh 11953548ad3SPavan Nikhilesh #endif /* __EVENT_TIMER_ADAPTER_PMD_H__ */ 120