ioctl не вызывается, если cmd = 2

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

Любые подсказки о том, что я делаю неправильно?

Заранее спасибо,

11
задан Javier J. Salmeron Garcia 9 April 2012 в 09:26
поделиться