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

发布于 2017-01-06 13:44:02 字数 97 浏览 3094 评论 3

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(3

晚风撩人 2017-09-08 01:26:00

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

清晨说ぺ晚安 2017-05-30 19:37:02

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

偏爱自由 2017-05-03 01:36:52

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文