From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1B9FC3402C for ; Fri, 13 Dec 2019 20:38:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0A0CA246C0 for ; Fri, 13 Dec 2019 20:38:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="mDAhW94I" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727539AbfLMPJs (ORCPT ); Fri, 13 Dec 2019 10:09:48 -0500 Received: from perceval.ideasonboard.com ([213.167.242.64]:55304 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727536AbfLMPJs (ORCPT ); Fri, 13 Dec 2019 10:09:48 -0500 Received: from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 312F7E00; Fri, 13 Dec 2019 16:09:45 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1576249785; bh=o0CHrYc/I6WkpvTk7+BesHWKBfYO6bupATH/o75dbwU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=mDAhW94IwncfLplmU4vn8//7eN/1PBQpAfRa6g+02MsXGWgvOlLAWSlNlB5ip3tyw 7jySM6NlCLHobkLpS4V2XvoClJQiu4zmNpvXFxOkdIfEAFaKiTXrdx+jFCImi4u4Hb lalLOR5/uDbq2GZcZN5F78GoizUvG8WavsE1/5lM= Date: Fri, 13 Dec 2019 17:09:35 +0200 From: Laurent Pinchart To: Boris Brezillon Cc: Mauro Carvalho Chehab , Hans Verkuil , Sakari Ailus , linux-media@vger.kernel.org, Rob Herring , Mark Rutland , devicetree@vger.kernel.org, Tomasz Figa , Nicolas Dufresne , kernel@collabora.com, Paul Kocialkowski , Ezequiel Garcia , Jonas Karlman , linux-rockchip@lists.infradead.org, Heiko Stuebner Subject: Re: [PATCH v3 1/7] media: vb2: Add a helper to get the vb2 buffer attached to a request Message-ID: <20191213150935.GC24654@pendragon.ideasonboard.com> References: <20191213125414.90725-1-boris.brezillon@collabora.com> <20191213125414.90725-2-boris.brezillon@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20191213125414.90725-2-boris.brezillon@collabora.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Hi Boris, On Fri, Dec 13, 2019 at 01:54:08PM +0100, Boris Brezillon wrote: > vb2_request_get_buf() returns the N-th buffer attached to a media > request. > > Signed-off-by: Boris Brezillon > --- > Changes in v3: > * None > > Changes in v2: > * Adjust the kernel doc as suggested by Hans > --- > .../media/common/videobuf2/videobuf2-core.c | 23 +++++++++++++++++++ > include/media/videobuf2-core.h | 11 +++++++++ > 2 files changed, 34 insertions(+) > > diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c > index 4489744fbbd9..c4c7980dcb0d 100644 > --- a/drivers/media/common/videobuf2/videobuf2-core.c > +++ b/drivers/media/common/videobuf2/videobuf2-core.c > @@ -1416,6 +1416,29 @@ unsigned int vb2_request_buffer_cnt(struct media_request *req) > } > EXPORT_SYMBOL_GPL(vb2_request_buffer_cnt); > > +struct vb2_buffer *vb2_request_get_buf(struct media_request *req, > + unsigned int n) > +{ > + struct media_request_object *obj; > + struct vb2_buffer *buf = NULL; > + unsigned int nbufs = 0; > + unsigned long flags; > + > + spin_lock_irqsave(&req->lock, flags); > + list_for_each_entry(obj, &req->objects, list) { > + if (!vb2_request_object_is_buffer(obj) || > + nbufs++ < n) > + continue; > + > + buf = container_of(obj, struct vb2_buffer, req_obj); > + break; > + } > + spin_unlock_irqrestore(&req->lock, flags); > + > + return buf; > +} > +EXPORT_SYMBOL_GPL(vb2_request_get_buf); > + > int vb2_core_prepare_buf(struct vb2_queue *q, unsigned int index, void *pb) > { > struct vb2_buffer *vb; > diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h > index a2b2208b02da..6206e25df764 100644 > --- a/include/media/videobuf2-core.h > +++ b/include/media/videobuf2-core.h > @@ -1225,4 +1225,15 @@ bool vb2_request_object_is_buffer(struct media_request_object *obj); > */ > unsigned int vb2_request_buffer_cnt(struct media_request *req); > > +/** > + * vb2_request_get_buf() - return the buffer at index @idx > + * > + * @req: the request. > + * @n: search for the Nth buffer in the req object list It's not very clear to me what "n" is here. Wouldn't it be better to pass the queue pointer instead, to get a buffer for a given queue ? > + * > + * Return a vb2 buffer or NULL if there's no buffer at the specified position > + */ > +struct vb2_buffer *vb2_request_get_buf(struct media_request *req, > + unsigned int n); > + > #endif /* _MEDIA_VIDEOBUF2_CORE_H */ -- Regards, Laurent Pinchart