Linux驱动中ioctl函数的幻数问题

LINUX-ROS 2016-08-09 10:49:24
我在利用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语句就退出了,不知道是什么原因,请前辈们给指点一下,谢谢!
...全文
328 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
LINUX-ROS 2016-08-09
  • 打赏
  • 举报
回复
已解决,ioctl的参数类型搞错了

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧