Подтвердить что ты не робот

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

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

error: неизвестное поле '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,
};

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

спасибо

4b9b3361

Ответ 1

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

Ответ 2

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