Страница 5 из 8

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:16
Olej
PaiMeiPetrovich писал(а):
28 авг 2022, 16:03
Да, я же специально, так как хотел проверить, сможет ли считывать cat)
Как же cat может что-то вычитать, если вы выбросили из реализации операцию node_read ? :lol:

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:16
PaiMeiPetrovich
inux Petrovich 5.15.0-46-generic #49~20.04.1-Ubuntu SMP Thu Aug 4 19:15:44 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:17
PaiMeiPetrovich
Olej писал(а):
28 авг 2022, 16:16
Как же cat может что-то вычитать, если вы выбросили из реализации операцию node_read ?
Ну да :-D

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:19
Olej
PaiMeiPetrovich писал(а):
28 авг 2022, 16:13
А почему не нужно собирать на последних версиях?
Потому что вся информаци, описания, ссылки, публикации ... - относятся к предыдущим версиям ядра. И если произошли в этой части изменения - то можно на этм месте засесть на дни тупой и бессмысленной работы!
Если нужно на свежее ядро, то отлаживаем ... на сегодня, на 5.4...5.10, а только потом адаптируем на последнее.

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:20
Olej
PaiMeiPetrovich писал(а):
28 авг 2022, 16:16
Petrovich 5.15.0-46-generic #49~20.04.1-Ubuntu SMP Thu Aug 4 19:15:44 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Так 5.15, а не 5.19 - почему я и удивиился.

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:23
Olej
PaiMeiPetrovich писал(а):
28 авг 2022, 16:14
У меня там все заголовочные файлы хранятся
Заголовочный файлы нужно смотреть в первую очередь на: https://elixir.bootlin.com/linux/v5.9.1 ... lude/linux
И только в последнюю очередь в: /lib/modules/`uname -r`/build/include

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:23
PaiMeiPetrovich
Olej писал(а):
28 авг 2022, 16:19
то можно на этм месте засесть на дни тупой и бессмысленной работы!
Ну да! Что скажите по поводу основного алгоритма? Я там немножко отредактировал запись, чтобы понятее было.

Вроде бы я понял, как это должно работать. У меня есть модуль, который при выполнении команды "sudo insmod hello.ko period=n" создает точку входа и начинает записывать строки в другой файл с периодом n. Далее, у нас имеется программа, которая при запуске, записывает новый период в точку входа. И, соответственно модуль должен считать это изменение в точке входа и изменить параметр периода уже у себя в коде. Для реализации этого, я вижу только один вариант:
В созданное "файловое имя" при инициализации модуля я записываю начальное значение периода.
Далее я запускаю мой цикл по записи константной строки в этот псевдофайл и, в теле цикла, я просто считываю этот период из этого файла ( с помощью kernel_read()??), перевожу строку в число ( тот же вопрос, kernel_atoi()??) и в функцию "msleep()" уже посылаю параметром это число.
Делаю я это для того, чтобы моментально отреагировать на изменения в точке входа, которые может произвести прикладное приложение (я же постоянно буду считывать информацию из этого файла)
Как вам идея? Не удивлюсь, если делать надо все по-другому:D

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:24
Olej
Olej писал(а):
28 авг 2022, 16:23
Заголовочный файлы нужно смотреть в первую очередь на: https://elixir.bootlin.com/linux/v5.9.1 ... lude/linux
Там можно и 5.19 посмотреть ... и даже 6.0 подсмотреть :lol:

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:25
PaiMeiPetrovich
Olej писал(а):
28 авг 2022, 16:23
И только в последнюю очередь в: /lib/modules/`uname -r`/build/include
Странно! Я же со своим ядром работаю в первую очередь...

Re: Создание модуля ядра линукс и програмки к этому модулю.

Добавлено: 28 авг 2022, 16:31
Olej
PaiMeiPetrovich писал(а):
28 авг 2022, 16:23
Далее я запускаю мой цикл по записи константной строки в этот псевдофайл и, в теле цикла, я просто считываю этот период из этого файла ( с помощью kernel_read()??), перевожу строку в число ( тот же вопрос, kernel_atoi()??) и в функцию "msleep()" уже посылаю параметром это число.
Делаю я это для того, чтобы моментально отреагировать на изменения в точке входа, которые может произвести прикладное приложение (я же постоянно буду считывать информацию из этого файла)
Нет!
Никаких там циклов.
Записывает значение (ничего не читая) node_write.
А считывает значение, и возвращает читающему, node_read.

А цикл задержка-сообщение ... крутится само по себе независимо.

P.S. По хорошему, значение, записываемое-считываемое, нужно защищать от одновременного изменения node_write и цикла выводящего сообщения - примитивами синхронизации или атомарными операциями ... но это для тебя пока - высшая математика. :lol: