On Thu, 6 Jun 2019 12:44:22 -0300 Ezequiel Garcia <ezequiel@xxxxxxxxxxxxx> wrote: > Some drivers need to access a vb2 buffer from its > queue index. Introduce an accessor to abstract this, > and avoid drivers from accessing private members. > > Signed-off-by: Ezequiel Garcia <ezequiel@xxxxxxxxxxxxx> > --- > include/media/videobuf2-core.h | 18 ++++++++++++++++++ > 1 file changed, 18 insertions(+) > > diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h > index c03ef7cc5071..7b1729320b16 100644 > --- a/include/media/videobuf2-core.h > +++ b/include/media/videobuf2-core.h > @@ -1163,6 +1163,24 @@ static inline void vb2_clear_last_buffer_dequeued(struct vb2_queue *q) > q->last_buffer_dequeued = false; > } > > +/** > + * vb2_get_buffer() - get a buffer from a queue > + * @q: pointer to &struct vb2_queue with videobuf2 queue. > + * @index: buffer index > + * > + * This function obtains a buffer from a queue, by its index. > + * Keep in mind that there is no refcounting involved in this > + * operation, so the buffer lifetime should be taken into > + * consideration. > + */ > +static inline struct vb2_buffer *vb2_get_buffer(struct vb2_queue *q, > + unsigned int index) > +{ > + if (q->num_buffers > 0 && index < q->num_buffers) No need to check q->num_buffers > 0 because in that case index < q->num_buffers is always false. Looks good otherwise Reviewed-by: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx> > + return q->bufs[index]; > + return NULL; > +} > + > /* > * The following functions are not part of the vb2 core API, but are useful > * functions for videobuf2-*.