7.65. ioctl VIDIOC_SUBDEV_QUERYCAP

7.65.1. 名称

VIDIOC_SUBDEV_QUERYCAP - 查询子设备功能

7.65.2. 概要

VIDIOC_SUBDEV_QUERYCAP

int ioctl(int fd, VIDIOC_SUBDEV_QUERYCAP, struct v4l2_subdev_capability *argp)

7.65.3. 参数

fd

open() 返回的文件描述符。

argp

指向结构体 v4l2_subdev_capability 的指针。

7.65.4. 描述

所有 V4L2 子设备都支持 VIDIOC_SUBDEV_QUERYCAP ioctl。它用于识别与此规范兼容的内核设备,并获取有关驱动程序和硬件功能的信息。ioctl 接受指向结构体 v4l2_subdev_capability 的指针,该结构体由驱动程序填充。当驱动程序与此规范不兼容时,ioctl 返回 ENOTTY 错误代码。

type v4l2_subdev_capability
struct v4l2_subdev_capability

__u32

version

驱动程序的版本号。

报告的版本由 V4L2 子系统按照内核编号方案提供。但是,如果例如,一个稳定或发行版修改的内核使用了来自较新内核的 V4L2 堆栈,则它可能并不总是返回与内核相同的版本。

版本号使用 KERNEL_VERSION() 宏格式化

#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))

__u32 version = KERNEL_VERSION(0, 8, 1);

printf ("Version: %u.%u.%u\\n",

(version >> 16) & 0xFF, (version >> 8) & 0xFF, version & 0xFF);

__u32

capabilities

已打开设备的子设备功能,请参阅 子设备功能标志

__u32

reserved[14]

保留以供将来扩展。由 V4L2 核心设置为 0。

子设备功能标志

V4L2_SUBDEV_CAP_RO_SUBDEV

0x00000001

子设备设备节点以只读模式注册。对修改设备状态的子设备 ioctl 的访问受到限制。有关哪些限制适用于只读子设备的说明,请参阅每个子设备 ioctl 文档。

7.65.5. 返回值

成功时返回 0,错误时返回 -1,并适当设置 errno 变量。通用错误代码在 通用错误代码 章节中描述。

ENOTTY

设备节点不是 V4L2 子设备。