Комментарии 7
Once again, we firstly provide the code, and then explain the example code.
Где же explanation?)
Приводить в пример scull драйвер - это, конечно, сильно, особенно, если вы не собираетесь объяснять, что там происходит. Почему бы не написать обычный "Hello World", как, например, в SimpleLinuxDriver? Есть даже статья, которая достаточно хорошо описывает, что, как и зачем делается, включая то, почему ваше устройство нужно создавать руками через mknod и как это сделать из LKM.
В старых версиях ядра таким же методом загружалось и удалялось само ядро
Что? Приведите, пожалуйста, ссылку на источник, где вы это нашли
и именно в драйвере определяется define/open/read/write
Интересная операция define, никогда о ней не слышал))
Например, совершая операцию “open” (открыть) с устройством под
управлением драйвера, я выполняю функцию scull_open, что эквивалентно
«перехвату» функции open в системном вызове.
Не совсем правда, никто ничего не перехватывает, VFS вызывает ->open(...) и в зависимости от файловой системы -> будут вызваны разные функции для разных FS, т.к. будут получены разные структуры file.
сначала читать книги, чтобы усвоить базовые концепции, а затем искать
информацию по конкретным деталям, когда дойдёт дело до практического
применения
IMHO, этот гайд применим для изучения абсолютно всего, что угодно.
Можно было бы что-то поприличнее выбрать для перевода.
Или, накрайняк, написать своё.
В частности:
mknod штука, конечно, работающая. Однако есть udev и с помощью конфигурационного файлика можно сделать назначение имени автоматически.
Кстати:
MODULE_LICENSE
иMODULE_AUTHOR
не так важны. Здесь я не буду подробно их разбирать.
Вот это нужно перевести по-другому: "Что это такое - я не знаю и здесь я не буду их разбирать". На деле получается, что некоторые функции вам будут недоступны, если выбирается неподходящая лицензия.
Далее не буду вдаваться в детали о коде, все их можно уточнить, погуглив информацию или изучив заголовочные файлы.
Это просто апофеоз статьи. Можно сразу было написать: используйте ваш любимый поисковик, чтобы написать свой первый драйвер.
Было интересно прочитать.
Что-то подобное я уже читал тут не так давно. И даже не один раз. Почему-то все авторы дальше hello-world не идут, хотя тема обширная и интересная.
Как разработать драйвер Linux с нуля