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