>> void *buf_hdr[], int num, int >> *ret); >> typedef int (*schedule_init_global_fn_t)(void); >> typedef int (*schedule_term_global_fn_t)(void); >> diff --git a/platform/linux-generic/odp_queue.c >> b/platform/linux-generic/odp_queue.c >> index 3e18f578..19945584 100644 >> --- a/platform/linux-generic/odp_queue.c >> +++ b/platform/linux-generic/odp_queue.c >> @@ -35,20 +35,22 @@ >> #include <string.h> >> #include <inttypes.h> >> >> +static int queue_init(queue_entry_t *queue, const char *name, >> + const odp_queue_param_t *param); >> + > > This is unnecessary for this patch. Don't waste reviewer's time with > unwanted changes. Unwanted changes have been discussed in the context > of other patches and clearly agreed that they should not be done. In > fact, such changes have been reversed.
This prototype has been added here to remove the need for the following function prototypes: _queue_enq, _queue_deq, _queue_enq_multi, _queue_deq_multi. There are already matching typedefs in odp_queue_if.h and "re-prototyping" them here is unnecessary and makes maintaining the code more complex. >> +{ >> + uint32_t queue_id; >> >> -static int _queue_enq_multi(queue_t handle, odp_buffer_hdr_t *buf_hdr[], >> - int num); >> -static int _queue_deq_multi(queue_t handle, odp_buffer_hdr_t *buf_hdr[], >> - int num); >> + queue_id = queue_to_id(handle); >> + return get_qentry(queue_id); >> +} >> >> static inline odp_queue_t queue_from_id(uint32_t queue_id) >> { >> @@ -70,50 +72,6 @@ queue_entry_t *get_qentry(uint32_t queue_id) >> return &queue_tbl->queue[queue_id]; >> } >> >> -static int queue_init(queue_entry_t *queue, const char *name, >> - const odp_queue_param_t *param) >> -{ >> - if (name == NULL) { >> - queue->s.name[0] = 0; >> - } else { >> - strncpy(queue->s.name, name, ODP_QUEUE_NAME_LEN - 1); >> - queue->s.name[ODP_QUEUE_NAME_LEN - 1] = 0; >> - } >> - memcpy(&queue->s.param, param, sizeof(odp_queue_param_t)); >> - if (queue->s.param.sched.lock_count > sched_fn->max_ordered_locks()) >> - return -1; >> - >> - if (param->type == ODP_QUEUE_TYPE_SCHED) { >> - queue->s.param.deq_mode = ODP_QUEUE_OP_DISABLED; >> - >> - if (param->sched.sync == ODP_SCHED_SYNC_ORDERED) { >> - unsigned i; >> - >> - odp_atomic_init_u64(&queue->s.ordered.ctx, 0); >> - odp_atomic_init_u64(&queue->s.ordered.next_ctx, 0); >> - >> - for (i = 0; i < queue->s.param.sched.lock_count; i++) >> - >> odp_atomic_init_u64(&queue->s.ordered.lock[i], >> - 0); >> - } >> - } >> - queue->s.type = queue->s.param.type; >> - >> - queue->s.enqueue = _queue_enq; >> - queue->s.dequeue = _queue_deq; >> - queue->s.enqueue_multi = _queue_enq_multi; >> - queue->s.dequeue_multi = _queue_deq_multi; >> - >> - queue->s.pktin = PKTIN_INVALID; >> - queue->s.pktout = PKTOUT_INVALID; >> - >> - queue->s.head = NULL; >> - queue->s.tail = NULL; >> - >> - return 0; >> -} >> - >> - > > Unnecessary change Comment above. >> >> -static int _queue_enq_multi(queue_t handle, odp_buffer_hdr_t *buf_hdr[], >> - int num) >> +static int queue_int_enq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[], >> + int num) > > No need to introduce another naming convention. The rest of the code > in ODP follows the convention of starting the function names with '_'. > For ex: take a look at odp_packet_io.c file. Naming conventions may be file specific and the '_' convention is clearly in minority. >> >> >> -static odp_buffer_hdr_t *_queue_deq(queue_t handle) >> +static odp_buffer_hdr_t *queue_int_deq(queue_t q_int) > > No need to introduce a new naming convention. Comment above. >> >> +static int queue_init(queue_entry_t *queue, const char *name, >> + const odp_queue_param_t *param) >> +{ >> + if (name == NULL) { >> + queue->s.name[0] = 0; >> + } else { >> + strncpy(queue->s.name, name, ODP_QUEUE_NAME_LEN - 1); >> + queue->s.name[ODP_QUEUE_NAME_LEN - 1] = 0; >> + } >> + memcpy(&queue->s.param, param, sizeof(odp_queue_param_t)); >> + if (queue->s.param.sched.lock_count > sched_fn->max_ordered_locks()) >> + return -1; >> + >> + if (param->type == ODP_QUEUE_TYPE_SCHED) { >> + queue->s.param.deq_mode = ODP_QUEUE_OP_DISABLED; >> + >> + if (param->sched.sync == ODP_SCHED_SYNC_ORDERED) { >> + unsigned i; >> + >> + odp_atomic_init_u64(&queue->s.ordered.ctx, 0); >> + odp_atomic_init_u64(&queue->s.ordered.next_ctx, 0); >> + >> + for (i = 0; i < queue->s.param.sched.lock_count; i++) >> + >> odp_atomic_init_u64(&queue->s.ordered.lock[i], >> + 0); >> + } >> + } >> + queue->s.type = queue->s.param.type; >> + >> + queue->s.enqueue = queue_int_enq; >> + queue->s.dequeue = queue_int_deq; >> + queue->s.enqueue_multi = queue_int_enq_multi; >> + queue->s.dequeue_multi = queue_int_deq_multi; >> + >> + queue->s.pktin = PKTIN_INVALID; >> + queue->s.pktout = PKTOUT_INVALID; >> + >> + queue->s.head = NULL; >> + queue->s.tail = NULL; >> + >> + return 0; >> +} >> + > > Unnecessary change. Earlier comment about prototypes. >> >> >> static queue_t queue_from_ext(odp_queue_t handle) >> { >> - uint32_t queue_id; >> - >> - queue_id = queue_to_id(handle); >> - return qentry_to_int(get_qentry(queue_id)); >> + return qentry_to_int(handle_to_qentry(handle)); > > 'handle_to_qentry' is another extra level of wrapper. I think we > already have enough wrappers because of all the type casts. No need to > introduce one more. > handle_to_qentry() is simply an inlined cast. > > I think queue_t should be removed completely. We should just use > odp_queue_t for internal interfaces as well. Looking at the code, > using odp_queue_t would introduce 3 extra addition instructions and > the impact to cache does not change. We can run l2fwd benchmark and > compare the numbers. This would keep the code simple as well. Not relevant for this patch. -Matias