Estoy desarrollando un módulo kernel que usa unlocked_ioctl. Lo probé con la versión 2.6.24-23-generic del kernel y funciona perfectamente. Ahora lo probé con la versión de kernel 3.3.1-1-ARCH y sucede algo raro: la función ioctl no se ejecuta cuando el valor de solicitud (cmd) es 2. Devuelve 0, pero la función no se ejecuta. Con el fin de comprobar que no se ejecuta hice lo siguiente:ioctl no se llama si cmd = 2
static long midriver_ioctl(struct file *file,
unsigned int cmd, unsigned long arg) {
printk("Called with cmd = %d\n", cmd);
me escribió un programa de prueba que llama ioctl para este dispositivo de 0 a 4096, y puedo ver en dmesg el mensaje "Llamada con CMD = n "para todos esos valores, excepto de" 2 ", el único que no se muestra.
¿Alguna pista sobre lo que estoy haciendo mal?
gracias de antemano,
Parte del código en la cadena está interceptando == cmd 2 y su manejo? – zvrba