Как узнать какая функция в ядре обрабатывает системный ioctrl над конкретным файлом в /dev/. Собственно хочу разобраться как работает драйвер uart а то устанавливаю одну скорость а получаю большую ошибку
За файлом закреплена структура file_operations. В ней поле операция ioctl. Этому полю присваивается указатель на функцию обработчик
типа:
....
.ioctl = file_ioctl;
....
Хорошо не прав, maior minor пара. Но поиск в дереве исходных текстов ядра в каталоге drivers/serial это же несистемный подход. Я хотел узнать может кто знает как в общем случае зная maior minor пару определит какие функции обслуживают системные вызовы, тоесть узнать указатель на file_operations этого файла. Ну а там дальше вроде понятно как узнать функцию обработчик.
>Но поиск в дереве исходных текстов ядра в каталоге drivers/serial это же несистемный подход.
Чем не нравится?
>Я хотел узнать может кто знает как в общем случае зная maior minor пару определит какие функции обслуживают системные вызовы, тоесть узнать указатель на file_operations этого файла.
Поиск по дереву дал результат, что для этого тебе нужно запутить ядро под отладчиком. Насколько я понял, драйверы регистрируют себя в ядре уже после запуска. А номера MAJOR, MINOR обычно хранятся в исходниках драйвера в виде макроса.