我有一个 Linux 标准头文件,例如
/usr/src/linux-headers-3.2.0-35/include/linux/usbdevice_fs.h
其中包含define
声明如下:
#define USBDEVFS_SUBMITURB32 _IOR('U', 10, struct usbdevfs_urb32)
#define USBDEVFS_DISCARDURB _IO('U', 11)
#define USBDEVFS_REAPURB _IOW('U', 12, void *)
“_IOR”、“_IO”和“_IOW”是什么意思?实际给出的值是什么,例如到USBDEVFS_DISCARDURB
?
它们根据 ioctl 函数和输入参数定义 ioctl 编号。
它们是在内核中定义的include/asm-generic/ioctl.h
.
您需要包括<linux/ioctl.h>
(or linux/asm-generic/ioctl.h
)在你的程序中。包括之前
/usr/src/linux-headers-3.2.0-35/include/linux/usbdevice_fs.h
您无法“预编译”此值(例如USBDEVFS_DISCARDURB
),因为它们在其他平台上可能会有所不同。例如,您正在普通的旧 x86 上开发代码,但随后有人会尝试在 x86_64/arm/mips/etc 上使用它。所以你应该总是包含内核的ioctl.h
确保您使用的是正确的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)