ioctl nie jest wywoływany, jeśli cmd = 2
Opracowuję moduł jądra, który używa unlocked_ioctl. Przetestowałem ją z jądrem w wersji 2.6.24-23-generic i działa doskonale. Teraz wypróbowałem go z wersją jądra 3.3.1-1-ARCH i dzieje się coś dziwnego: funkcja ioctl nie jest wykonywana, gdy wartość żądania (cmd) wynosi 2. Zwraca 0, ale funkcja nie jest wykonywana. Aby sprawdzić, czy nie zostało wykonane, zrobiłem co następuje:
<code>static long midriver_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { printk("Called with cmd = %d\n", cmd); </code>
Napisałem program testowy, który wywołuje ioctl dla tego urządzenia od 0 do 4096 i widzę w dmesg komunikat „Wywołany z cmd = n” dla wszystkich tych wartości, z wyjątkiem „2”, jedynego, który nie jest pokazany.
Jakieś wskazówki dotyczące tego, co robię źle?
Z góry dziękuję,