aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/include/odp_queue_internal.h
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@linaro.org>2014-02-14 15:56:45 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2014-02-17 13:21:04 +0400
commit87c1485d91c4b2b23b2e94547bed17af930e3f07 (patch)
treebe5d7e7ff9da4431ddf78a01e19f60312b9d14e5 /platform/linux-generic/include/odp_queue_internal.h
parent1a3bba72dd9ce0751139cab6fd231f1d2ec20efd (diff)
Multi-enq and deq operations
- Added multi-buffer enqueue and dequeue operations for queues - And scheduler/packet IO support for those - Added/renamed schedule functions - _poll removed from functions names (default operation) - former odp_schedule() is now odp_schedule_once() - Enabled -O3 optimization (again) Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org>
Diffstat (limited to 'platform/linux-generic/include/odp_queue_internal.h')
-rw-r--r--platform/linux-generic/include/odp_queue_internal.h21
1 files changed, 17 insertions, 4 deletions
diff --git a/platform/linux-generic/include/odp_queue_internal.h b/platform/linux-generic/include/odp_queue_internal.h
index 6d6700a60..fede56a0c 100644
--- a/platform/linux-generic/include/odp_queue_internal.h
+++ b/platform/linux-generic/include/odp_queue_internal.h
@@ -32,6 +32,8 @@ extern "C" {
#include <odp_spinlock.h>
#endif
+#define QUEUE_MULTI_MAX 8
+
#define QUEUE_STATUS_FREE 0
#define QUEUE_STATUS_READY 1
#define QUEUE_STATUS_NOTSCHED 2
@@ -40,8 +42,13 @@ extern "C" {
/* forward declaration */
union queue_entry_u;
-typedef int (*enqueue_func_t)(union queue_entry_u *, odp_buffer_hdr_t *);
-typedef odp_buffer_hdr_t *(*dequeue_func_t)(union queue_entry_u *);
+typedef int (*enq_func_t)(union queue_entry_u *, odp_buffer_hdr_t *);
+typedef odp_buffer_hdr_t *(*deq_func_t)(union queue_entry_u *);
+
+typedef int (*enq_multi_func_t)(union queue_entry_u *,
+ odp_buffer_hdr_t **, int);
+typedef int (*deq_multi_func_t)(union queue_entry_u *,
+ odp_buffer_hdr_t **, int);
struct queue_entry_s {
#ifdef USE_TICKETLOCK
@@ -54,8 +61,11 @@ struct queue_entry_s {
odp_buffer_hdr_t *tail;
int status;
- enqueue_func_t enqueue ODP_ALIGNED_CACHE;
- dequeue_func_t dequeue;
+ enq_func_t enqueue ODP_ALIGNED_CACHE;
+ deq_func_t dequeue;
+ enq_multi_func_t enqueue_multi;
+ deq_multi_func_t dequeue_multi;
+
odp_queue_t handle;
odp_buffer_t sched_buf;
odp_queue_type_t type;
@@ -76,6 +86,9 @@ queue_entry_t *get_qentry(uint32_t queue_id);
int queue_enq(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr);
odp_buffer_hdr_t *queue_deq(queue_entry_t *queue);
+int queue_enq_multi(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[], int num);
+int queue_deq_multi(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[], int num);
+
void queue_lock(queue_entry_t *queue);
void queue_unlock(queue_entry_t *queue);