Использование связи ioctl между режимом ядра и пользовательским режимом

Я хочу общаться со своим модулем ядра с помощью ioctl. Я написал две программы на c, одну для модуля ядра, а другую для пользовательского режима. Я получаю эту ошибку при компиляции модуля ядра:

ошибка: в инициализаторе указано неизвестное поле ‘ioctl’

в этой строке:

struct file_operations Fops = {
 .read = device_read,
 .write = device_write,
 .ioctl = device_ioctl,  ------> at this point error is occuring.
 .open = device_open,
 .release = device_release,
};

любая идея, почему это происходит.

Благодарность


person Dalchand    schedule 03.05.2011    source источник


Ответы (2)


В более новых ядрах предпочтительнее использовать поля .unlocked_ioctl или .compat_ioctl. Обычный .ioctl был удален из struct file_operations. Это обсуждение может прояснить что случилось и как с этим бороться.

person Eugene    schedule 04.05.2011

В более новых ядрах используйте .unlocked_ioctl вместо .ioctl. Работает нормально.

person kumar    schedule 16.10.2012