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,

Antworten auf die Frage(2)

Ihre Antwort auf die Frage