/* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2017-2018 Intel Corporation. * All rights reserved. */ #ifndef __RTE_EVENT_TIMER_ADAPTER_PMD_H__ #define __RTE_EVENT_TIMER_ADAPTER_PMD_H__ /** * @file * RTE Event Timer Adapter API (PMD Side) * * @note * This file provides implementation helpers for internal use by PMDs. They * are not intended to be exposed to applications and are not subject to ABI * versioning. * */ #ifdef __cplusplus extern "C" { #endif #include "rte_event_timer_adapter.h" /* * Definitions of functions exported by an event timer adapter implementation * through *rte_event_timer_adapter_ops* structure supplied in the * *rte_event_timer_adapter* structure associated with an event timer adapter. */ typedef int (*rte_event_timer_adapter_init_t)( struct rte_event_timer_adapter *adapter); /**< @internal Event timer adapter implementation setup */ typedef int (*rte_event_timer_adapter_uninit_t)( struct rte_event_timer_adapter *adapter); /**< @internal Event timer adapter implementation teardown */ typedef int (*rte_event_timer_adapter_start_t)( const struct rte_event_timer_adapter *adapter); /**< @internal Start running event timer adapter */ typedef int (*rte_event_timer_adapter_stop_t)( const struct rte_event_timer_adapter *adapter); /**< @internal Stop running event timer adapter */ typedef void (*rte_event_timer_adapter_get_info_t)( const struct rte_event_timer_adapter *adapter, struct rte_event_timer_adapter_info *adapter_info); /**< @internal Get contextual information for event timer adapter */ typedef int (*rte_event_timer_adapter_stats_get_t)( const struct rte_event_timer_adapter *adapter, struct rte_event_timer_adapter_stats *stats); /**< @internal Get statistics for event timer adapter */ typedef int (*rte_event_timer_adapter_stats_reset_t)( const struct rte_event_timer_adapter *adapter); /**< @internal Reset statistics for event timer adapter */ /** * @internal Structure containing the functions exported by an event timer * adapter implementation. */ struct rte_event_timer_adapter_ops { rte_event_timer_adapter_init_t init; /**< Set up adapter */ rte_event_timer_adapter_uninit_t uninit;/**< Tear down adapter */ rte_event_timer_adapter_start_t start; /**< Start adapter */ rte_event_timer_adapter_stop_t stop; /**< Stop adapter */ rte_event_timer_adapter_get_info_t get_info; /**< Get info from driver */ rte_event_timer_adapter_stats_get_t stats_get; /**< Get adapter statistics */ rte_event_timer_adapter_stats_reset_t stats_reset; /**< Reset adapter statistics */ rte_event_timer_arm_burst_t arm_burst; /**< Arm one or more event timers */ rte_event_timer_arm_tmo_tick_burst_t arm_tmo_tick_burst; /**< Arm event timers with same expiration time */ rte_event_timer_cancel_burst_t cancel_burst; /**< Cancel one or more event timers */ }; /** * @internal Adapter data; structure to be placed in shared memory to be * accessible by various processes in a multi-process configuration. */ struct rte_event_timer_adapter_data { uint8_t id; /**< Event timer adapter ID */ uint8_t event_dev_id; /**< Event device ID */ uint32_t socket_id; /**< Socket ID where memory is allocated */ uint8_t event_port_id; /**< Optional: event port ID used when the inbuilt port is absent */ const struct rte_memzone *mz; /**< Event timer adapter memzone pointer */ struct rte_event_timer_adapter_conf conf; /**< Configuration used to configure the adapter. */ uint32_t caps; /**< Adapter capabilities */ void *adapter_priv; /**< Timer adapter private data*/ uint8_t service_inited; /**< Service initialization state */ uint32_t service_id; /**< Service ID*/ RTE_STD_C11 uint8_t started : 1; /**< Flag to indicate adapter started. */ } __rte_cache_aligned; #ifdef __cplusplus } #endif #endif /* __RTE_EVENT_TIMER_ADAPTER_PMD_H__ */