ioctl wird nicht aufgerufen, wenn cmd = 2 ist
Ich entwickle ein Kernelmodul, das unlocked_ioctl verwendet. Ich habe es mit der Kernel-Version 2.6.24-23-generic getestet und es funktioniert einwandfrei. Jetzt habe ich es mit der Kernel-Version 3.3.1-1-ARCH versucht und es passiert etwas Seltsames: Die ioctl-Funktion wird nicht ausgeführt, wenn der Anforderungswert (cmd) 2 ist. Sie gibt 0 zurück, aber die Funktion wird nicht ausgeführt. Um zu überprüfen, dass es nicht ausgeführt wird, habe ich Folgendes getan:
<code>static long midriver_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { printk("Called with cmd = %d\n", cmd); </code>
Ich habe ein Testprogramm geschrieben, das ioctl für dieses Gerät von 0 bis 4096 aufruft, und in dmesg wird die Meldung "Called with cmd = n" für alle diese Werte angezeigt, mit Ausnahme von "2", dem einzigen Wert, der nicht angezeigt wird.
Irgendwelche Hinweise darauf, was ich falsch mache?
Danke im Voraus,