Использование 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,
};
любая идея, почему это происходит.
спасибо
Ответы
Ответ 1
В более новых ядрах предпочтительным способом является использование полей .unlocked_ioctl
или .compat_ioctl
. Простая .ioctl
была удалена из struct file_operations
. Это обсуждение может прояснить, что произошло и как с этим бороться.
Ответ 2
В новых ядрах используйте .unlocked_ioctl
вместо .ioctl
. Он отлично работает.