Я разрабатываю модуль ядра, который использует 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", единственное, что есть не показано.
Любые подсказки о том, что я делаю неправильно?
Заранее спасибо,