diff options
author | Petri Savolainen <petri.savolainen@linaro.org> | 2014-02-14 15:56:45 +0200 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2014-02-17 13:21:04 +0400 |
commit | 87c1485d91c4b2b23b2e94547bed17af930e3f07 (patch) | |
tree | be5d7e7ff9da4431ddf78a01e19f60312b9d14e5 /platform/linux-generic/include/odp_queue_internal.h | |
parent | 1a3bba72dd9ce0751139cab6fd231f1d2ec20efd (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.h | 21 |
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); |