【发布时间】:2012-04-09 09:26:50
【问题描述】:
我正在开发一个使用 unlocked_ioctl 的内核模块。我用内核版本 2.6.24-23-generic 对其进行了测试,它运行良好。现在我用内核版本 3.3.1-1-ARCH 尝试了它,发生了一些奇怪的事情:当请求值(cmd)为 2 时,不执行 ioctl 函数。它返回 0,但不执行该函数。为了检查它没有被执行,我做了以下操作:
static long midriver_ioctl(struct file *file,
unsigned int cmd, unsigned long arg) {
printk("Called with cmd = %d\n", cmd);
我编写了一个测试程序,为此设备从 0 到 4096 调用 ioctl,我可以在 dmesg 中看到所有这些值的消息“使用 cmd = n 调用”,除了“2”,唯一一个未显示。
关于我做错了什么的任何线索?
提前谢谢你,
【问题讨论】:
-
链中的某些代码正在拦截 cmd==2 并对其进行处理?
标签: c module linux-kernel ioctl