/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2016-2017 Intel Corporation
+ * Copyright(c) 2019 Arm Limited
*/
/**
#include <rte_memory.h>
#include <rte_malloc.h>
#include <rte_ring.h>
+#include <rte_ring_elem.h>
#include "rte_eventdev.h"
#define RTE_TAILQ_EVENT_RING_NAME "RTE_EVENT_RING"
const struct rte_event *events,
unsigned int n, uint16_t *free_space)
{
- uint32_t prod_head, prod_next;
- uint32_t free_entries;
+ unsigned int num;
+ uint32_t space;
- n = __rte_ring_move_prod_head(&r->r, r->r.prod.single, n,
- RTE_RING_QUEUE_VARIABLE,
- &prod_head, &prod_next, &free_entries);
- if (n == 0)
- goto end;
+ num = rte_ring_enqueue_burst_elem(&r->r, events,
+ sizeof(struct rte_event), n,
+ &space);
- ENQUEUE_PTRS(&r->r, &r[1], prod_head, events, n, struct rte_event);
-
- update_tail(&r->r.prod, prod_head, prod_next, 1, 1);
-end:
if (free_space != NULL)
- *free_space = free_entries - n;
- return n;
+ *free_space = space;
+
+ return num;
}
/**
struct rte_event *events,
unsigned int n, uint16_t *available)
{
- uint32_t cons_head, cons_next;
- uint32_t entries;
-
- n = __rte_ring_move_cons_head(&r->r, r->r.cons.single, n,
- RTE_RING_QUEUE_VARIABLE,
- &cons_head, &cons_next, &entries);
- if (n == 0)
- goto end;
+ unsigned int num;
+ uint32_t remaining;
- DEQUEUE_PTRS(&r->r, &r[1], cons_head, events, n, struct rte_event);
+ num = rte_ring_dequeue_burst_elem(&r->r, events,
+ sizeof(struct rte_event), n,
+ &remaining);
- update_tail(&r->r.cons, cons_head, cons_next, 1, 0);
-
-end:
if (available != NULL)
- *available = entries - n;
- return n;
+ *available = remaining;
+
+ return num;
}
/*