Linux驱动中ioctl函数的幻数问题
我在利用ioctl时候,采用以下代码
//检测命令有效性
if(_IOC_TYPE(cmd) != RELAY_IOC_MAGIC)
{
return -EINVAL;
}
//根据命令类型,检测参数空间是否可以访问
if(_IOC_DIR(cmd) & _IOC_READ)
{
err = !access_ok(VERIFY_WRITE, (void *)arg, _IOC_SIZE(cmd));
}
else if(_IOC_DIR(cmd) & _IOC_WRITE)
{
err = !access_ok(VERIFY_READ, (void *)arg, _IOC_SIZE(cmd));
}
printk("err=%d\n");
if(err)
{
return -EFAULT;
}
结果,在运行程序的时候,在第一个if语句就退出了,不知道是什么原因,请前辈们给指点一下,谢谢!