ipc: end multiprocess thread during cleanup
[dpdk.git] / lib / eventdev / rte_eventdev_core.h
index 115b97e..c328bdb 100644 (file)
@@ -29,6 +29,9 @@ typedef uint16_t (*event_dequeue_burst_t)(void *port, struct rte_event ev[],
                                          uint64_t timeout_ticks);
 /**< @internal Dequeue burst of events from port of a device */
 
+typedef void (*event_maintain_t)(void *port, int op);
+/**< @internal Maintains a port */
+
 typedef uint16_t (*event_tx_adapter_enqueue_t)(void *port,
                                               struct rte_event ev[],
                                               uint16_t nb_events);
@@ -39,98 +42,33 @@ typedef uint16_t (*event_crypto_adapter_enqueue_t)(void *port,
                                                   uint16_t nb_events);
 /**< @internal Enqueue burst of events on crypto adapter */
 
-#define RTE_EVENTDEV_NAME_MAX_LEN (64)
-/**< @internal Max length of name of event PMD */
-
-/**
- * @internal
- * The data part, with no function pointers, associated with each device.
- *
- * This structure is safe to place in shared memory to be common among
- * different processes in a multi-process configuration.
- */
-struct rte_eventdev_data {
-       int socket_id;
-       /**< Socket ID where memory is allocated */
-       uint8_t dev_id;
-       /**< Device ID for this instance */
-       uint8_t nb_queues;
-       /**< Number of event queues. */
-       uint8_t nb_ports;
-       /**< Number of event ports. */
-       void *ports[RTE_EVENT_MAX_PORTS_PER_DEV];
-       /**< Array of pointers to ports. */
-       struct rte_event_port_conf ports_cfg[RTE_EVENT_MAX_PORTS_PER_DEV];
-       /**< Array of port configuration structures. */
-       struct rte_event_queue_conf queues_cfg[RTE_EVENT_MAX_QUEUES_PER_DEV];
-       /**< Array of queue configuration structures. */
-       uint16_t links_map[RTE_EVENT_MAX_PORTS_PER_DEV *
-                          RTE_EVENT_MAX_QUEUES_PER_DEV];
-       /**< Memory to store queues to port connections. */
-       void *dev_private;
-       /**< PMD-specific private data */
-       uint32_t event_dev_cap;
-       /**< Event device capabilities(RTE_EVENT_DEV_CAP_)*/
-       struct rte_event_dev_config dev_conf;
-       /**< Configuration applied to device. */
-       uint8_t service_inited;
-       /* Service initialization state */
-       uint32_t service_id;
-       /* Service ID*/
-       void *dev_stop_flush_arg;
-       /**< User-provided argument for event flush function */
-
-       RTE_STD_C11
-       uint8_t dev_started : 1;
-       /**< Device state: STARTED(1)/STOPPED(0) */
-
-       char name[RTE_EVENTDEV_NAME_MAX_LEN];
-       /**< Unique identifier name */
-
-       uint64_t reserved_64s[4]; /**< Reserved for future fields */
-       void *reserved_ptrs[4];   /**< Reserved for future fields */
-} __rte_cache_aligned;
-
-/** @internal The data structure associated with each event device. */
-struct rte_eventdev {
+struct rte_event_fp_ops {
+       void **data;
+       /**< points to array of internal port data pointers */
        event_enqueue_t enqueue;
-       /**< Pointer to PMD enqueue function. */
+       /**< PMD enqueue function. */
        event_enqueue_burst_t enqueue_burst;
-       /**< Pointer to PMD enqueue burst function. */
+       /**< PMD enqueue burst function. */
        event_enqueue_burst_t enqueue_new_burst;
-       /**< Pointer to PMD enqueue burst function(op new variant) */
+       /**< PMD enqueue burst new function. */
        event_enqueue_burst_t enqueue_forward_burst;
-       /**< Pointer to PMD enqueue burst function(op forward variant) */
+       /**< PMD enqueue burst fwd function. */
        event_dequeue_t dequeue;
-       /**< Pointer to PMD dequeue function. */
+       /**< PMD dequeue function. */
        event_dequeue_burst_t dequeue_burst;
-       /**< Pointer to PMD dequeue burst function. */
-       event_tx_adapter_enqueue_t txa_enqueue_same_dest;
-       /**< Pointer to PMD eth Tx adapter burst enqueue function with
-        * events destined to same Eth port & Tx queue.
-        */
+       /**< PMD dequeue burst function. */
+       event_maintain_t maintain;
+       /**< PMD port maintenance function. */
        event_tx_adapter_enqueue_t txa_enqueue;
-       /**< Pointer to PMD eth Tx adapter enqueue function. */
-       struct rte_eventdev_data *data;
-       /**< Pointer to device data */
-       struct eventdev_ops *dev_ops;
-       /**< Functions exported by PMD */
-       struct rte_device *dev;
-       /**< Device info. supplied by probing */
-
-       RTE_STD_C11
-       uint8_t attached : 1;
-       /**< Flag indicating the device is attached */
-
+       /**< PMD Tx adapter enqueue function. */
+       event_tx_adapter_enqueue_t txa_enqueue_same_dest;
+       /**< PMD Tx adapter enqueue same destination function. */
        event_crypto_adapter_enqueue_t ca_enqueue;
-       /**< Pointer to PMD crypto adapter enqueue function. */
-
-       uint64_t reserved_64s[4]; /**< Reserved for future fields */
-       void *reserved_ptrs[3];   /**< Reserved for future fields */
+       /**< PMD Crypto adapter enqueue function. */
+       uintptr_t reserved[6];
 } __rte_cache_aligned;
 
-extern struct rte_eventdev *rte_eventdevs;
-/** @internal The pool of rte_eventdev structures. */
+extern struct rte_event_fp_ops rte_event_fp_ops[RTE_EVENT_MAX_DEVS];
 
 #ifdef __cplusplus
 }