<snip>

> >
> > > +
> > > +/**
> > > + * Start to enqueue several objects on the ring.
> > > + * Note that no actual objects are put in the queue by this
> > > +function,
> > > + * it just reserves for user such ability.
> > > + * User has to call appropriate enqueue_finish() to copy objects
> > > +into the
> > > + * queue and complete given enqueue operation.
> > > + *
> > > + * @param r
> > > + *   A pointer to the ring structure.
> > > + * @param n
> > > + *   The number of objects to add in the ring from the obj_table.
> > > + * @param free_space
> > > + *   if non-NULL, returns the amount of space in the ring after the
> > > + *   enqueue operation has finished.
> > > + * @return
> > > + *   The number of objects that can be enqueued, either 0 or n
> > > + */
> > > +__rte_experimental
> > > +static __rte_always_inline unsigned int
> > > +rte_ring_enqueue_bulk_start(struct rte_ring *r, unsigned int n,
> > > +         unsigned int *free_space)
> > If one wants to use _elem_ APIs for ring peek, a combination of legacy API
> (format) and a _elem_ API is required.
> > For ex:
> > rte_ring_enqueue_bulk_start
> > rte_ring_enqueue_elem_finish
> >
> > I understand why you have done this. I think this is getting somewhat too
> inconsistent.
> >
> 
> Agree, there could be some confusion.
> Don't know what would be a better approach here....
> 2 similar functions with exactly same parameter list (one wrapper for
> another):
> rte_ring_enqueue_elem_bulk_start() and
> rte_ring_enqueue_elem_bulk_start().
> ?
We should go with 2 functions 'rte_ring_enqueue_bulk_start' and 
'rte_ring_enqueue_bulk_elem_start'. There is a slight variation in the way 
obj_table is provided.
'rte_ring_enqueue_bulk_start' can be the wrapper.

> 
> > > +{
> > > + return __rte_ring_do_enqueue_start(r, n, RTE_RING_QUEUE_FIXED,
> > > +                 free_space);
> > > +}
> > > +
> >

Reply via email to