media: v4l2: Add REMOVE_BUFS ioctl
VIDIOC_REMOVE_BUFS ioctl allows to remove buffers from a queue. The number of buffers to remove in given by count field of struct v4l2_remove_buffers and the range start at the index specified in the same structure. Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com> Reviewed-by: Mauro Carvalho Chehab <mchehab@kernel.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> [hverkuil: vidioc-remove-bufs.rst: mention no bufs are freed on error]
This commit is contained in:
committed by
Hans Verkuil
parent
5fb19f2092
commit
a3293a8538
@@ -163,6 +163,8 @@ struct v4l2_fh;
|
||||
* :ref:`VIDIOC_CREATE_BUFS <vidioc_create_bufs>` ioctl
|
||||
* @vidioc_prepare_buf: pointer to the function that implements
|
||||
* :ref:`VIDIOC_PREPARE_BUF <vidioc_prepare_buf>` ioctl
|
||||
* @vidioc_remove_bufs: pointer to the function that implements
|
||||
* :ref:`VIDIOC_REMOVE_BUFS <vidioc_remove_bufs>` ioctl
|
||||
* @vidioc_overlay: pointer to the function that implements
|
||||
* :ref:`VIDIOC_OVERLAY <vidioc_overlay>` ioctl
|
||||
* @vidioc_g_fbuf: pointer to the function that implements
|
||||
@@ -422,6 +424,8 @@ struct v4l2_ioctl_ops {
|
||||
struct v4l2_create_buffers *b);
|
||||
int (*vidioc_prepare_buf)(struct file *file, void *fh,
|
||||
struct v4l2_buffer *b);
|
||||
int (*vidioc_remove_bufs)(struct file *file, void *fh,
|
||||
struct v4l2_remove_buffers *d);
|
||||
|
||||
int (*vidioc_overlay)(struct file *file, void *fh, unsigned int i);
|
||||
int (*vidioc_g_fbuf)(struct file *file, void *fh,
|
||||
|
||||
@@ -870,6 +870,16 @@ int vb2_core_create_bufs(struct vb2_queue *q, enum vb2_memory memory,
|
||||
*/
|
||||
int vb2_core_prepare_buf(struct vb2_queue *q, struct vb2_buffer *vb, void *pb);
|
||||
|
||||
/**
|
||||
* vb2_core_remove_bufs() -
|
||||
* @q: pointer to &struct vb2_queue with videobuf2 queue.
|
||||
* @start: first index of the range of buffers to remove.
|
||||
* @count: number of buffers to remove.
|
||||
*
|
||||
* Return: returns zero on success; an error code otherwise.
|
||||
*/
|
||||
int vb2_core_remove_bufs(struct vb2_queue *q, unsigned int start, unsigned int count);
|
||||
|
||||
/**
|
||||
* vb2_core_qbuf() - Queue a buffer from userspace
|
||||
*
|
||||
|
||||
@@ -334,6 +334,8 @@ int vb2_ioctl_streamon(struct file *file, void *priv, enum v4l2_buf_type i);
|
||||
int vb2_ioctl_streamoff(struct file *file, void *priv, enum v4l2_buf_type i);
|
||||
int vb2_ioctl_expbuf(struct file *file, void *priv,
|
||||
struct v4l2_exportbuffer *p);
|
||||
int vb2_ioctl_remove_bufs(struct file *file, void *priv,
|
||||
struct v4l2_remove_buffers *p);
|
||||
|
||||
/* struct v4l2_file_operations helpers */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user