New upstream version 18.05
[deb_dpdk.git] / lib / librte_eventdev / rte_event_timer_adapter_pmd.h
diff --git a/lib/librte_eventdev/rte_event_timer_adapter_pmd.h b/lib/librte_eventdev/rte_event_timer_adapter_pmd.h
new file mode 100644 (file)
index 0000000..cf3509d
--- /dev/null
@@ -0,0 +1,114 @@
+/* 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__ */