This patch series adds the remaining changes to the Request API topic
branch.
Userspace visible changes:
- Invalid request_fd values now return -EINVAL instead of -ENOENT to be consistent
with e.g. dmabuf fds.
- It is no longer possible to use VIDIOC_G_EXT_CTRLS for requests
that are not completed. -EACCES is returned in that case.
- Attempting to use requests if requests are not supported by the driver
will result in -EACCES instead of -EPERM.
- Attempting to mix direct QBUF with queueing buffers via a request
will result in -EBUSY instead of -EPERM.
- Added capabilities to VIDIOC_REQBUFS/CREATE_BUFS: tells the user which
streaming I/O methods are available and if the request API can be used.
Driver visible changes:
Drivers should set the new vb2_queue 'supports_request' bitfield to 1
if a vb2_queue can support requests. Otherwise the queue cannot be
used with requests.
This bitfield is also used to fill in the new capabilities field
in struct v4l2_requestbuffers and v4l2_create_buffers.
This series also contains a bug fix to prevent a race condition when
you are accessing request data (media_request_(un)lock_for_access).
Regards,
Hans
The following changes since commit 757fdb51c14fda221ccb6999a865f7f895c79750:
media: vivid: add request support (2018-08-31 11:26:06 -0400)
are available in the Git repository at:
git://linuxtv.org/hverkuil/media_tree.git reqv18-1
for you to fetch changes up to 051dfd971de1317626d322581546257b748ebde1:
media-request: update documentation (2018-09-04 11:34:57 +0200)
----------------------------------------------------------------
Hans Verkuil (10):
media-request: return -EINVAL for invalid request_fds
v4l2-ctrls: return -EACCES if request wasn't completed
buffer.rst: only set V4L2_BUF_FLAG_REQUEST_FD for QBUF
videodev2.h: add new capabilities for buffer types
vb2: set reqbufs/create_bufs capabilities
media-request: add media_request_(un)lock_for_access
v4l2-ctrls: use media_request_(un)lock_for_access
v4l2-ctrls: improve media_request_(un)lock_for_update
media-request: EPERM -> EACCES/EBUSY
media-request: update documentation
Documentation/media/uapi/mediactl/media-ioc-request-alloc.rst | 3 +-
Documentation/media/uapi/mediactl/media-request-ioc-queue.rst | 16 ++++-------
Documentation/media/uapi/mediactl/request-api.rst | 55 +++++++++++++++++++----------------
Documentation/media/uapi/mediactl/request-func-close.rst | 1 +
Documentation/media/uapi/mediactl/request-func-poll.rst | 2 +-
Documentation/media/uapi/v4l/buffer.rst | 22 +++++++++-----
Documentation/media/uapi/v4l/vidioc-create-bufs.rst | 14 ++++++++-
Documentation/media/uapi/v4l/vidioc-g-ext-ctrls.rst | 48 +++++++++++++++----------------
Documentation/media/uapi/v4l/vidioc-qbuf.rst | 35 ++++++++++++-----------
Documentation/media/uapi/v4l/vidioc-reqbufs.rst | 42 ++++++++++++++++++++++++++-
drivers/media/common/videobuf2/videobuf2-core.c | 2 +-
drivers/media/common/videobuf2/videobuf2-v4l2.c | 24 ++++++++++++++--
drivers/media/media-request.c | 20 ++++++++++---
drivers/media/platform/vim2m.c | 1 +
drivers/media/platform/vivid/vivid-core.c | 5 ++++
drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 4 ++-
drivers/media/v4l2-core/v4l2-ctrls.c | 32 +++++++++++++--------
drivers/media/v4l2-core/v4l2-ioctl.c | 4 +--
include/media/media-request.h | 62 ++++++++++++++++++++++++++++++++++++++--
include/media/videobuf2-core.h | 2 ++
include/uapi/linux/videodev2.h | 13 +++++++--
21 files changed, 294 insertions(+), 113 deletions(-)