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

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 28 авг 2022, 16:16

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

PaiMeiPetrovich
Писатель
Сообщения: 36
Зарегистрирован: 26 авг 2022, 20:56
Контактная информация:

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

Непрочитанное сообщение PaiMeiPetrovich » 28 авг 2022, 16:16

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

PaiMeiPetrovich
Писатель
Сообщения: 36
Зарегистрирован: 26 авг 2022, 20:56
Контактная информация:

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

Непрочитанное сообщение PaiMeiPetrovich » 28 авг 2022, 16:17

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 28 авг 2022, 16:19

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 28 авг 2022, 16:20

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 - почему я и удивиился.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 28 авг 2022, 16:23

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

PaiMeiPetrovich
Писатель
Сообщения: 36
Зарегистрирован: 26 авг 2022, 20:56
Контактная информация:

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

Непрочитанное сообщение PaiMeiPetrovich » 28 авг 2022, 16:23

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

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 28 авг 2022, 16:24

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

PaiMeiPetrovich
Писатель
Сообщения: 36
Зарегистрирован: 26 авг 2022, 20:56
Контактная информация:

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

Непрочитанное сообщение PaiMeiPetrovich » 28 авг 2022, 16:25

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

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

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

Непрочитанное сообщение Olej » 28 авг 2022, 16:31

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

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

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

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей