Re: [RFCv3 PATCH 03/10] vb2: add note that buf_finish can be called with !vb2_is_streaming()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks Hans.

Acked-by: Pawel Osciak <pawel@xxxxxxxxxx>

On Thu, Feb 13, 2014 at 6:40 PM, Hans Verkuil <hverkuil@xxxxxxxxx> wrote:
> From: Hans Verkuil <hans.verkuil@xxxxxxxxx>
>
> Drivers need to be aware that buf_finish can be called when there is no
> streaming going on, so make a note of that.
>
> Also add a bunch of missing periods at the end of sentences.
>
> Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx>
> ---
>  include/media/videobuf2-core.h | 44 ++++++++++++++++++++++--------------------
>  1 file changed, 23 insertions(+), 21 deletions(-)
>
> diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
> index f443ce0..82b7f0f 100644
> --- a/include/media/videobuf2-core.h
> +++ b/include/media/videobuf2-core.h
> @@ -34,49 +34,49 @@ struct vb2_fileio_data;
>   *             usually will result in the allocator freeing the buffer (if
>   *             no other users of this buffer are present); the buf_priv
>   *             argument is the allocator private per-buffer structure
> - *             previously returned from the alloc callback
> + *             previously returned from the alloc callback.
>   * @get_userptr: acquire userspace memory for a hardware operation; used for
>   *              USERPTR memory types; vaddr is the address passed to the
>   *              videobuf layer when queuing a video buffer of USERPTR type;
>   *              should return an allocator private per-buffer structure
>   *              associated with the buffer on success, NULL on failure;
>   *              the returned private structure will then be passed as buf_priv
> - *              argument to other ops in this structure
> + *              argument to other ops in this structure.
>   * @put_userptr: inform the allocator that a USERPTR buffer will no longer
> - *              be used
> + *              be used.
>   * @attach_dmabuf: attach a shared struct dma_buf for a hardware operation;
>   *                used for DMABUF memory types; alloc_ctx is the alloc context
>   *                dbuf is the shared dma_buf; returns NULL on failure;
>   *                allocator private per-buffer structure on success;
> - *                this needs to be used for further accesses to the buffer
> + *                this needs to be used for further accesses to the buffer.
>   * @detach_dmabuf: inform the exporter of the buffer that the current DMABUF
>   *                buffer is no longer used; the buf_priv argument is the
>   *                allocator private per-buffer structure previously returned
> - *                from the attach_dmabuf callback
> + *                from the attach_dmabuf callback.
>   * @map_dmabuf: request for access to the dmabuf from allocator; the allocator
>   *             of dmabuf is informed that this driver is going to use the
> - *             dmabuf
> + *             dmabuf.
>   * @unmap_dmabuf: releases access control to the dmabuf - allocator is notified
> - *               that this driver is done using the dmabuf for now
> + *               that this driver is done using the dmabuf for now.
>   * @prepare:   called every time the buffer is passed from userspace to the
> - *             driver, useful for cache synchronisation, optional
> + *             driver, useful for cache synchronisation, optional.
>   * @finish:    called every time the buffer is passed back from the driver
> - *             to the userspace, also optional
> + *             to the userspace, also optional.
>   * @vaddr:     return a kernel virtual address to a given memory buffer
>   *             associated with the passed private structure or NULL if no
> - *             such mapping exists
> + *             such mapping exists.
>   * @cookie:    return allocator specific cookie for a given memory buffer
>   *             associated with the passed private structure or NULL if not
> - *             available
> + *             available.
>   * @num_users: return the current number of users of a memory buffer;
>   *             return 1 if the videobuf layer (or actually the driver using
> - *             it) is the only user
> + *             it) is the only user.
>   * @mmap:      setup a userspace mapping for a given memory buffer under
> - *             the provided virtual memory region
> + *             the provided virtual memory region.
>   *
>   * Required ops for USERPTR types: get_userptr, put_userptr.
>   * Required ops for MMAP types: alloc, put, num_users, mmap.
> - * Required ops for read/write access types: alloc, put, num_users, vaddr
> + * Required ops for read/write access types: alloc, put, num_users, vaddr.
>   * Required ops for DMABUF types: attach_dmabuf, detach_dmabuf, map_dmabuf,
>   *                               unmap_dmabuf.
>   */
> @@ -258,27 +258,29 @@ struct vb2_buffer {
>   * @wait_prepare:      release any locks taken while calling vb2 functions;
>   *                     it is called before an ioctl needs to wait for a new
>   *                     buffer to arrive; required to avoid a deadlock in
> - *                     blocking access type
> + *                     blocking access type.
>   * @wait_finish:       reacquire all locks released in the previous callback;
>   *                     required to continue operation after sleeping while
> - *                     waiting for a new buffer to arrive
> + *                     waiting for a new buffer to arrive.
>   * @buf_init:          called once after allocating a buffer (in MMAP case)
>   *                     or after acquiring a new USERPTR buffer; drivers may
>   *                     perform additional buffer-related initialization;
>   *                     initialization failure (return != 0) will prevent
> - *                     queue setup from completing successfully; optional
> + *                     queue setup from completing successfully; optional.
>   * @buf_prepare:       called every time the buffer is queued from userspace
>   *                     and from the VIDIOC_PREPARE_BUF ioctl; drivers may
>   *                     perform any initialization required before each hardware
>   *                     operation in this callback; drivers that support
>   *                     VIDIOC_CREATE_BUFS must also validate the buffer size;
>   *                     if an error is returned, the buffer will not be queued
> - *                     in driver; optional
> + *                     in driver; optional.
>   * @buf_finish:                called before every dequeue of the buffer back to
>   *                     userspace; drivers may perform any operations required
> - *                     before userspace accesses the buffer; optional
> + *                     before userspace accesses the buffer; optional. Note:
> + *                     this op can be called as well when vb2_is_streaming()
> + *                     returns false!
>   * @buf_cleanup:       called once before the buffer is freed; drivers may
> - *                     perform any additional cleanup; optional
> + *                     perform any additional cleanup; optional.
>   * @start_streaming:   called once to enter 'streaming' state; the driver may
>   *                     receive buffers with @buf_queue callback before
>   *                     @start_streaming is called; the driver gets the number
> @@ -299,7 +301,7 @@ struct vb2_buffer {
>   *                     the buffer back by calling vb2_buffer_done() function;
>   *                     it is allways called after calling STREAMON ioctl;
>   *                     might be called before start_streaming callback if user
> - *                     pre-queued buffers before calling STREAMON
> + *                     pre-queued buffers before calling STREAMON.
>   */
>  struct vb2_ops {
>         int (*queue_setup)(struct vb2_queue *q, const struct v4l2_format *fmt,
> --
> 1.8.4.rc3
>



-- 
Best regards,
Pawel Osciak
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux