正如在这个问题中指出的,Linux内核模块中的ioctl函数的原型是:
(第1版)
int ioctl(struct inode *i, struct file *f, unsigned int cmd, unsigned long arg);
或
(第2版)
long ioctl(struct file *f, unsigned int cmd, unsigned long arg);
我想在实现字符设备驱动程序的内核模块中使用它们。
在这种情况下,上述两种原型是否都适合?如果是,为什么?如果没有,如何选择正确的?
哪些头/源文件(S)包含这些原型?换句话说:这些原型的官方参考文件是什么?
我试图在Android上运行一个简单的IOCTL示例。我正在使用内核2.6和ICS。模块已正确注册/未注册(insmod/rmmod)。但是,每次尝试在模拟器上执行./user_app时,我总是
error: first ioctl: Not a typewriter
error: second ioctl: Not a typewriter
message: `�
这很明显是个通货。我调试了应用程序,没有执行fops过程(device_ioctl、read_ioctl和write_ioctl)。
我想知道在Android上使用/实现IOCTL是否有任何限制。先谢谢你。
-劳尔
以下是代码