Linux-ioctl什么时候会调用失败,而且返回-1

意见反馈 意见反馈 主题:991 回复:2082

Linux-ioctl什么时候会调用失败,而且返回-1

夜无邪 发布于 2017-01-06 字数 174 浏览 1641 回复 3

在测试程序中打开文件正常,也比较肯定调用ioctl要传进去的参数没有传错,但是返回值为-1,看了下linux源码,也没发现有什么特别的地方,想请教一下通常情况下是什么导致调用失败?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

晚风撩人 2017-09-08 3 楼

测试文件一般调用失败主要有:1、你createfile失败,就是你没有和底层驱动建立连接2、你的驱动open进行的操作使你的访问失败,返回-1。从测试的角度,你只需要注意这两个地方。建议你抓一下debug,通过debug定位问题的位置

清晨说ぺ晚安 2017-05-30 2 楼

首先请检查open、read之类的正确。之后,
你的ioctl要是自己定义的cmd,需要同时在内核态以及用户态建立描述这个cmd的头文件。否则乱传cmd自然不能匹配。
cmd里包含你的ioctl的参数类型(是否有参数,参数是只传递进内核;还是只从内核取;还是既传递进内核又从内核取)以及混淆
具体cmd的定义你可以很容易到内核源码里找到例子,grep -rni "ioctl" ./drivers
跟着学就好了

偏爱自由 2017-05-03 1 楼

驱动层的ioctl代码是你自己写的么?建议你在驱动层的ioctl函数中多添加一些 printk 看看,看看到底执行到那一步失败的。