xref: /dpdk/lib/eventdev/event_timer_adapter_pmd.h (revision 719834a6849e1daf4a70ff7742bbcc3ae7e25607)
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 #include "rte_event_timer_adapter.h"
2053548ad3SPavan Nikhilesh 
2153548ad3SPavan Nikhilesh /*
2253548ad3SPavan Nikhilesh  * Definitions of functions exported by an event timer adapter implementation
2353548ad3SPavan Nikhilesh  * through *rte_event_timer_adapter_ops* structure supplied in the
2453548ad3SPavan Nikhilesh  * *rte_event_timer_adapter* structure associated with an event timer adapter.
2553548ad3SPavan Nikhilesh  */
2653548ad3SPavan Nikhilesh 
2753548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_init_t)(
2853548ad3SPavan Nikhilesh 		struct rte_event_timer_adapter *adapter);
2953548ad3SPavan Nikhilesh /**< @internal Event timer adapter implementation setup */
3053548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_uninit_t)(
3153548ad3SPavan Nikhilesh 		struct rte_event_timer_adapter *adapter);
3253548ad3SPavan Nikhilesh /**< @internal Event timer adapter implementation teardown */
3353548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_start_t)(
3453548ad3SPavan Nikhilesh 		const struct rte_event_timer_adapter *adapter);
3553548ad3SPavan Nikhilesh /**< @internal Start running event timer adapter */
3653548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stop_t)(
3753548ad3SPavan Nikhilesh 		const struct rte_event_timer_adapter *adapter);
3853548ad3SPavan Nikhilesh /**< @internal Stop running event timer adapter */
3953548ad3SPavan Nikhilesh typedef void (*rte_event_timer_adapter_get_info_t)(
4053548ad3SPavan Nikhilesh 		const struct rte_event_timer_adapter *adapter,
4153548ad3SPavan Nikhilesh 		struct rte_event_timer_adapter_info *adapter_info);
4253548ad3SPavan Nikhilesh /**< @internal Get contextual information for event timer adapter */
4353548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stats_get_t)(
4453548ad3SPavan Nikhilesh 		const struct rte_event_timer_adapter *adapter,
4553548ad3SPavan Nikhilesh 		struct rte_event_timer_adapter_stats *stats);
4653548ad3SPavan Nikhilesh /**< @internal Get statistics for event timer adapter */
4753548ad3SPavan Nikhilesh typedef int (*rte_event_timer_adapter_stats_reset_t)(
4853548ad3SPavan Nikhilesh 		const struct rte_event_timer_adapter *adapter);
4953548ad3SPavan Nikhilesh /**< @internal Reset statistics for event timer adapter */
500727ff34SErik Gabriel Carrillo typedef int (*rte_event_timer_remaining_ticks_get_t)(
510727ff34SErik Gabriel Carrillo 		const struct rte_event_timer_adapter *adapter,
520727ff34SErik Gabriel Carrillo 		const struct rte_event_timer *evtim,
530727ff34SErik Gabriel Carrillo 		uint64_t *ticks_remaining);
540727ff34SErik Gabriel Carrillo /**< @internal Get remaining ticks for event timer */
5553548ad3SPavan Nikhilesh 
5653548ad3SPavan Nikhilesh /**
5753548ad3SPavan Nikhilesh  * @internal Structure containing the functions exported by an event timer
5853548ad3SPavan Nikhilesh  * adapter implementation.
5953548ad3SPavan Nikhilesh  */
6053548ad3SPavan Nikhilesh struct event_timer_adapter_ops {
6153548ad3SPavan Nikhilesh 	rte_event_timer_adapter_init_t		init;  /**< Set up adapter */
6253548ad3SPavan Nikhilesh 	rte_event_timer_adapter_uninit_t	uninit;/**< Tear down adapter */
6353548ad3SPavan Nikhilesh 	rte_event_timer_adapter_start_t		start; /**< Start adapter */
6453548ad3SPavan Nikhilesh 	rte_event_timer_adapter_stop_t		stop;  /**< Stop adapter */
6553548ad3SPavan Nikhilesh 	rte_event_timer_adapter_get_info_t	get_info;
6653548ad3SPavan Nikhilesh 	/**< Get info from driver */
6753548ad3SPavan Nikhilesh 	rte_event_timer_adapter_stats_get_t	stats_get;
6853548ad3SPavan Nikhilesh 	/**< Get adapter statistics */
6953548ad3SPavan Nikhilesh 	rte_event_timer_adapter_stats_reset_t	stats_reset;
7053548ad3SPavan Nikhilesh 	/**< Reset adapter statistics */
7153548ad3SPavan Nikhilesh 	rte_event_timer_arm_burst_t		arm_burst;
7253548ad3SPavan Nikhilesh 	/**< Arm one or more event timers */
7353548ad3SPavan Nikhilesh 	rte_event_timer_arm_tmo_tick_burst_t	arm_tmo_tick_burst;
7453548ad3SPavan Nikhilesh 	/**< Arm event timers with same expiration time */
7553548ad3SPavan Nikhilesh 	rte_event_timer_cancel_burst_t		cancel_burst;
7653548ad3SPavan Nikhilesh 	/**< Cancel one or more event timers */
770727ff34SErik Gabriel Carrillo 	rte_event_timer_remaining_ticks_get_t	remaining_ticks_get;
780727ff34SErik Gabriel Carrillo 	/**< Get remaining ticks for event timer */
7953548ad3SPavan Nikhilesh };
8053548ad3SPavan Nikhilesh 
8153548ad3SPavan Nikhilesh /**
8253548ad3SPavan Nikhilesh  * @internal Adapter data; structure to be placed in shared memory to be
8353548ad3SPavan Nikhilesh  * accessible by various processes in a multi-process configuration.
8453548ad3SPavan Nikhilesh  */
85*c6552d9aSTyler Retzlaff struct __rte_cache_aligned rte_event_timer_adapter_data {
8653548ad3SPavan Nikhilesh 	uint8_t id;
8753548ad3SPavan Nikhilesh 	/**< Event timer adapter ID */
8853548ad3SPavan Nikhilesh 	uint8_t event_dev_id;
8953548ad3SPavan Nikhilesh 	/**< Event device ID */
9053548ad3SPavan Nikhilesh 	uint32_t socket_id;
9153548ad3SPavan Nikhilesh 	/**< Socket ID where memory is allocated */
9253548ad3SPavan Nikhilesh 	uint8_t event_port_id;
9353548ad3SPavan Nikhilesh 	/**< Optional: event port ID used when the inbuilt port is absent */
9453548ad3SPavan Nikhilesh 	const struct rte_memzone *mz;
9553548ad3SPavan Nikhilesh 	/**< Event timer adapter memzone pointer */
9653548ad3SPavan Nikhilesh 	struct rte_event_timer_adapter_conf conf;
9753548ad3SPavan Nikhilesh 	/**< Configuration used to configure the adapter. */
9853548ad3SPavan Nikhilesh 	uint32_t caps;
9953548ad3SPavan Nikhilesh 	/**< Adapter capabilities */
10053548ad3SPavan Nikhilesh 	void *adapter_priv;
10153548ad3SPavan Nikhilesh 	/**< Timer adapter private data*/
10253548ad3SPavan Nikhilesh 	uint8_t service_inited;
10353548ad3SPavan Nikhilesh 	/**< Service initialization state */
10453548ad3SPavan Nikhilesh 	uint32_t service_id;
10553548ad3SPavan Nikhilesh 	/**< Service ID*/
10653548ad3SPavan Nikhilesh 
10753548ad3SPavan Nikhilesh 	uint8_t started : 1;
10853548ad3SPavan Nikhilesh 	/**< Flag to indicate adapter started. */
109*c6552d9aSTyler Retzlaff };
11053548ad3SPavan Nikhilesh 
11153548ad3SPavan Nikhilesh #endif /* __EVENT_TIMER_ADAPTER_PMD_H__ */
112