Supongamos que he definido lo siguiente.¿Cómo se llama una compatibilidad ioctl desde el espacio de usuario? ¿Alguien puede dar algunos ejemplos?
#define MY_IOCTL_CMD1 _IOR(MAGIC_NUMBER, 0x01, arg1)
#define MY_IOCTL_CMD2 _IOW(MAGIC_NUMBER, 0x02, arg2)
#ifdef CONFIG_COMPAT
#define MY_COMPAT_IOCTL_CMD1 _IOR(MAGIC_NUMBER, 0x01, compat_arg1)
#define MY_COMPAT_IOCTL_CMD2 _IOW(MAGIC_NUMBER, 0x02, compat_arg2)
#endif
Ahora cuando hacemos ioctl desde el espacio de usuario, por lo general lo hacen
ioctl(fd, MY_IOCTL_CMD1, &arg1)
Q: es lo que realmente necesita tener una ioctl con MY_COMPAT_IOCTL_CMD1
como petición?
En el código de distribución, tengo controladores definidos de la siguiente manera. ioctl: device_ioctl
#ifdef CONFIG_COMPAT
compat_ioctl: device_compat_ioctl
#endif
¿Puede alguien por favor proporcionar algunas explicaciones de todo esto?