假设我已经定义了以下内容.
#define MY_IOCTL_CMD1 _IOR(MAGIC_NUMBER, 0x01, arg1)
#define MY_IOCTL_CMD2 _IOW(MAGIC_NUMBER, 0x02, arg2)
#ifdef CONFIG_COMPAT
#define MY_COMPAT_IOCTL_CMD1 _IOR(MAGIC_NUMBER, 0x01, compat_arg1)
#define MY_COMPAT_IOCTL_CMD2 _IOW(MAGIC_NUMBER, 0x02, compat_arg2)
#endif
Run Code Online (Sandbox Code Playgroud)
现在,当我们从用户空间进行ioctl时,我们通常会这样做
ioctl(fd, MY_IOCTL_CMD1, &arg1)
Run Code Online (Sandbox Code Playgroud)
问:我们真的需要有ioctl MY_COMPAT_IOCTL_CMD1作为请求吗?
在devide代码中,我的处理程序定义如下.ioctl:device_ioctl
#ifdef CONFIG_COMPAT
compat_ioctl: device_compat_ioctl
#endif
Run Code Online (Sandbox Code Playgroud)
有人可以提供一些解释吗?