小编deb*_*yay的帖子

如何从用户空间调用compat ioctl?任何人都可以提供一些例外吗?

假设我已经定义了以下内容.

#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)

有人可以提供一些解释吗?

linux kernel

5
推荐指数
1
解决办法
6697
查看次数

标签 统计

kernel ×1

linux ×1