在测试程序中打开文件正常,也比较肯定调用ioctl要传进去的参数没有传错,但是返回值为-1,看了下linux源码,也没发现有什么特别的地方,想请教一下通常情况下是什么导致调用失败?
Linux 驱动
首先请检查open、read之类的正确。之后, 你的ioctl要是自己定义的cmd,需要同时在内核态以及用户态建立描述这个cmd的头文件。否则乱传cmd自然不能匹配。 cmd里包含你的ioctl的参数类型(是否有参数,参数是只传递进内核;还是只从内核取;还是既传递进内核又从内核取)以及混淆 具体cmd的定义你可以很容易到内核源码里找到例子,grep -rni "ioctl" ./drivers 跟着学就好了
用的是Android的内核,在board file里注册一个spi的device,会有特别步骤吗?
采用 MODULE_DEVICE_TABLE 注册的i2c设备是怎么设置i2c通道的呢?
对内核同步机制的一个疑问
linux 驱动 insmod和probe函数
ubuntu下TP-LINK TL-WN823N无线网卡死活打不上
GSM模块驱动的设计思路
学习Linux的几点建议
最先进的战舰也使用Linux