Я разрабатываю модуль ядра, который использует unlocked_ioctl. Я протестировал его с версией ядра 2.6.24-23-generic, и он отлично работает. Теперь я попробовал это с версией ядра 3.3.1-1-ARCH, и происходит что-то странное: функция ioctl не выполняется, когда значение запроса (cmd) равно 2. Она возвращает 0, но функция не выполняется. Чтобы проверить, что он не выполняется, я сделал следующее:
static long midriver_ioctl(struct file *file,
unsigned int cmd, unsigned long arg) {
printk("Called with cmd = %d\n", cmd);
Я написал тестовую программу, которая вызывает ioctl для этого устройства от 0 до 4096, и я вижу в dmesg сообщение «Called with cmd = n» для всех те значения, кроме "2", единственное, что не показано.
Любые подсказки о том, что я делаю неправильно?
Заранее спасибо,