that was merged but doxygen needs refining:

/opt/Linaro/odp3.git/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h:21: warning: Member _odp_ticketlock_lock(odp_ticketlock_t *ticketlock) (function) of file ticketlock_inlines.h is not documented. /opt/Linaro/odp3.git/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h:36: warning: Member _odp_ticketlock_trylock(odp_ticketlock_t *tklock) (function) of file ticketlock_inlines.h is not documented. /opt/Linaro/odp3.git/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h:64: warning: Member _odp_ticketlock_unlock(odp_ticketlock_t *ticketlock) (function) of file ticketlock_inlines.h is not documented. /opt/Linaro/odp3.git/platform/linux-generic/include/odp/api/plat/ticketlock_inlines.h:76: warning: Member _odp_ticketlock_is_locked(odp_ticketlock_t *ticketlock) (function) of file ticketlock_inlines.h is not documented.


On 09/20/16 06:35, Bill Fischofer wrote:
For this series:

Reviewed-and-tested-by: Bill Fischofer <bill.fischo...@linaro.org>

On Thu, Sep 15, 2016 at 8:39 AM, Petri Savolainen <
petri.savolai...@nokia.com> wrote:

Reuse multi enqueue and dequeue implementations for single
enq/deq operations. This enables implementation to
concentrate on optimizing the multi operations. Single
operations do not suffer a major performance decrease since
compiler likely optimizes the inlined code for single
operations (num is fixed to 1).

Signed-off-by: Petri Savolainen <petri.savolai...@nokia.com>
---
  platform/linux-generic/include/odp_schedule_if.h |   3 -
  platform/linux-generic/odp_queue.c               | 134
+++++++----------------
  platform/linux-generic/odp_schedule.c            |   1 -
  platform/linux-generic/odp_schedule_ordered.c    |  20 ----
  platform/linux-generic/odp_schedule_sp.c         |  12 --
  5 files changed, 41 insertions(+), 129 deletions(-)

diff --git a/platform/linux-generic/include/odp_schedule_if.h
b/platform/linux-generic/include/odp_schedule_if.h
index 13cdfb3..df73e70 100644
--- a/platform/linux-generic/include/odp_schedule_if.h
+++ b/platform/linux-generic/include/odp_schedule_if.h
@@ -30,8 +30,6 @@ typedef int (*schedule_init_queue_fn_t)(uint32_t
queue_index,
                                        );
  typedef void (*schedule_destroy_queue_fn_t)(uint32_t queue_index);
  typedef int (*schedule_sched_queue_fn_t)(uint32_t queue_index);
-typedef int (*schedule_ord_enq_fn_t)(uint32_t queue_index, void *buf_hdr,
-                                    int sustain, int *ret);
  typedef int (*schedule_ord_enq_multi_fn_t)(uint32_t queue_index,
                                            void *buf_hdr[], int num,
                                            int sustain, int *ret);
@@ -48,7 +46,6 @@ typedef struct schedule_fn_t {
         schedule_init_queue_fn_t    init_queue;
         schedule_destroy_queue_fn_t destroy_queue;
         schedule_sched_queue_fn_t   sched_queue;
-       schedule_ord_enq_fn_t       ord_enq;
         schedule_ord_enq_multi_fn_t ord_enq_multi;
         schedule_init_global_fn_t   init_global;
         schedule_term_global_fn_t   term_global;
diff --git a/platform/linux-generic/odp_queue.c
b/platform/linux-generic/odp_queue.c
index bec1e51..80d99e8 100644
--- a/platform/linux-generic/odp_queue.c
+++ b/platform/linux-generic/odp_queue.c
@@ -65,19 +65,6 @@ static inline int queue_is_ordered(queue_entry_t *qe)
         return qe->s.param.sched.sync == ODP_SCHED_SYNC_ORDERED;
  }

-static inline void queue_add(queue_entry_t *queue,
-                            odp_buffer_hdr_t *buf_hdr)
-{
-       buf_hdr->next = NULL;
-
-       if (queue->s.head)
-               queue->s.tail->next = buf_hdr;
-       else
-               queue->s.head = buf_hdr;
-
-       queue->s.tail = buf_hdr;
-}
-
  queue_entry_t *get_qentry(uint32_t queue_id)
  {
         return &queue_tbl->queue[queue_id];
@@ -396,37 +383,8 @@ odp_queue_t odp_queue_lookup(const char *name)
         return ODP_QUEUE_INVALID;
  }

-int queue_enq(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr, int
sustain)
-{
-       int ret;
-
-       if (sched_fn->ord_enq(queue->s.index, buf_hdr, sustain, &ret))
-               return ret;
-
-       LOCK(&queue->s.lock);
-
-       if (odp_unlikely(queue->s.status < QUEUE_STATUS_READY)) {
-               UNLOCK(&queue->s.lock);
-               ODP_ERR("Bad queue status\n");
-               return -1;
-       }
-
-       queue_add(queue, buf_hdr);
-
-       if (queue->s.status == QUEUE_STATUS_NOTSCHED) {
-               queue->s.status = QUEUE_STATUS_SCHED;
-               UNLOCK(&queue->s.lock);
-               if (sched_fn->sched_queue(queue->s.index))
-                       ODP_ABORT("schedule_queue failed\n");
-               return 0;
-       }
-
-       UNLOCK(&queue->s.lock);
-       return 0;
-}
-
-int queue_enq_multi(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[],
-                   int num, int sustain)
+static inline int enq_multi(queue_entry_t *queue, odp_buffer_hdr_t
*buf_hdr[],
+                           int num, int sustain)
  {
         int sched = 0;
         int i, ret;
@@ -472,6 +430,24 @@ int queue_enq_multi(queue_entry_t *queue,
odp_buffer_hdr_t *buf_hdr[],
         return num; /* All events enqueued */
  }

+int queue_enq_multi(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[],
int num,
+                   int sustain)
+{
+       return enq_multi(queue, buf_hdr, num, sustain);
+}
+
+int queue_enq(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr, int
sustain)
+{
+       int ret;
+
+       ret = enq_multi(queue, &buf_hdr, 1, sustain);
+
+       if (ret == 1)
+               return 0;
+       else
+               return -1;
+}
+
  int odp_queue_enq_multi(odp_queue_t handle, const odp_event_t ev[], int
num)
  {
         odp_buffer_hdr_t *buf_hdr[QUEUE_MULTI_MAX];
@@ -504,54 +480,8 @@ int odp_queue_enq(odp_queue_t handle, odp_event_t ev)
         return queue->s.enqueue(queue, buf_hdr, SUSTAIN_ORDER);
  }

-odp_buffer_hdr_t *queue_deq(queue_entry_t *queue)
-{
-       odp_buffer_hdr_t *buf_hdr;
-       uint32_t i;
-
-       LOCK(&queue->s.lock);
-
-       if (queue->s.head == NULL) {
-               /* Already empty queue */
-               if (queue->s.status == QUEUE_STATUS_SCHED)
-                       queue->s.status = QUEUE_STATUS_NOTSCHED;
-
-               UNLOCK(&queue->s.lock);
-               return NULL;
-       }
-
-       buf_hdr       = queue->s.head;
-       queue->s.head = buf_hdr->next;
-       buf_hdr->next = NULL;
-
-       /* Note that order should really be assigned on enq to an
-        * ordered queue rather than deq, however the logic is simpler
-        * to do it here and has the same effect.
-        */
-       if (queue_is_ordered(queue)) {
-               buf_hdr->origin_qe = queue;
-               buf_hdr->order = queue->s.order_in++;
-               for (i = 0; i < queue->s.param.sched.lock_count; i++) {
-                       buf_hdr->sync[i] =
-                               odp_atomic_fetch_inc_u64(&
queue->s.sync_in[i]);
-               }
-               buf_hdr->flags.sustain = SUSTAIN_ORDER;
-       } else {
-               buf_hdr->origin_qe = NULL;
-       }
-
-       if (queue->s.head == NULL) {
-               /* Queue is now empty */
-               queue->s.tail = NULL;
-       }
-
-       UNLOCK(&queue->s.lock);
-
-       return buf_hdr;
-}
-
-
-int queue_deq_multi(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[],
int num)
+static inline int deq_multi(queue_entry_t *queue, odp_buffer_hdr_t
*buf_hdr[],
+                           int num)
  {
         odp_buffer_hdr_t *hdr;
         int i;
@@ -606,6 +536,24 @@ int queue_deq_multi(queue_entry_t *queue,
odp_buffer_hdr_t *buf_hdr[], int num)
         return i;
  }

+int queue_deq_multi(queue_entry_t *queue, odp_buffer_hdr_t *buf_hdr[],
int num)
+{
+       return deq_multi(queue, buf_hdr, num);
+}
+
+odp_buffer_hdr_t *queue_deq(queue_entry_t *queue)
+{
+       odp_buffer_hdr_t *buf_hdr;
+       int ret;
+
+       ret = deq_multi(queue, &buf_hdr, 1);
+
+       if (ret == 1)
+               return buf_hdr;
+       else
+               return NULL;
+}
+
  int odp_queue_deq_multi(odp_queue_t handle, odp_event_t events[], int
num)
  {
         queue_entry_t *queue;
@@ -740,7 +688,7 @@ int sched_cb_queue_deq_multi(uint32_t queue_index,
odp_event_t ev[], int num)
         queue_entry_t *qe = get_qentry(queue_index);
         odp_buffer_hdr_t *buf_hdr[num];

-       ret = queue_deq_multi(qe, buf_hdr, num);
+       ret = deq_multi(qe, buf_hdr, num);

         if (ret > 0)
                 for (i = 0; i < ret; i++)
diff --git a/platform/linux-generic/odp_schedule.c
b/platform/linux-generic/odp_schedule.c
index 78982d9..81e79c9 100644
--- a/platform/linux-generic/odp_schedule.c
+++ b/platform/linux-generic/odp_schedule.c
@@ -1063,7 +1063,6 @@ const schedule_fn_t schedule_default_fn = {
         .init_queue = schedule_init_queue,
         .destroy_queue = schedule_destroy_queue,
         .sched_queue = schedule_sched_queue,
-       .ord_enq = schedule_ordered_queue_enq,
         .ord_enq_multi = schedule_ordered_queue_enq_multi,
         .init_global = schedule_init_global,
         .term_global = schedule_term_global,
diff --git a/platform/linux-generic/odp_schedule_ordered.c
b/platform/linux-generic/odp_schedule_ordered.c
index 8c1dd7e..92a1cc8 100644
--- a/platform/linux-generic/odp_schedule_ordered.c
+++ b/platform/linux-generic/odp_schedule_ordered.c
@@ -452,26 +452,6 @@ static int ordered_queue_enq(queue_entry_t *queue,
odp_buffer_hdr_t *buf_hdr,
         return 0;
  }

-int schedule_ordered_queue_enq(uint32_t queue_index, void *p_buf_hdr,
-                              int sustain, int *ret)
-{
-       queue_entry_t *origin_qe;
-       uint64_t order;
-       queue_entry_t *qe = get_qentry(queue_index);
-       odp_buffer_hdr_t *buf_hdr = p_buf_hdr;
-
-       get_queue_order(&origin_qe, &order, buf_hdr);
-
-       /* Handle enqueues from ordered queues separately */
-       if (origin_qe) {
-               *ret = ordered_queue_enq(qe, buf_hdr, sustain,
-                                        origin_qe, order);
-               return 1;
-       }
-
-       return 0;
-}
-
  int schedule_ordered_queue_enq_multi(uint32_t queue_index, void
*p_buf_hdr[],
                                      int num, int sustain, int *ret)
  {
diff --git a/platform/linux-generic/odp_schedule_sp.c
b/platform/linux-generic/odp_schedule_sp.c
index 2e28aa4..879eb5c 100644
--- a/platform/linux-generic/odp_schedule_sp.c
+++ b/platform/linux-generic/odp_schedule_sp.c
@@ -298,17 +298,6 @@ static int sched_queue(uint32_t qi)
         return 0;
  }

-static int ord_enq(uint32_t queue_index, void *buf_hdr, int sustain, int
*ret)
-{
-       (void)queue_index;
-       (void)buf_hdr;
-       (void)sustain;
-       (void)ret;
-
-       /* didn't consume the events */
-       return 0;
-}
-
  static int ord_enq_multi(uint32_t queue_index, void *buf_hdr[], int num,
                          int sustain, int *ret)
  {
@@ -673,7 +662,6 @@ const schedule_fn_t schedule_sp_fn = {
         .init_queue    = init_queue,
         .destroy_queue = destroy_queue,
         .sched_queue   = sched_queue,
-       .ord_enq       = ord_enq,
         .ord_enq_multi = ord_enq_multi,
         .init_global   = init_global,
         .term_global   = term_global,
--
2.8.1



Reply via email to