I posted patch http://patches.opendataplane.org/patch/6991/ to address the
doxygen issues with this patch.

On Thu, Sep 22, 2016 at 12:00 PM, Maxim Uvarov <maxim.uva...@linaro.org>
wrote:

> 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