Страница 6 из 8
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 28 авг 2022, 16:33
Olej
PaiMeiPetrovich писал(а): ↑28 авг 2022, 16:25
Странно! Я же со своим ядром работаю в первую очередь...
Программный код никогда никто не пишет для себя ... кроме конченных п
Ыан
Эров
Код пишется для использования!
И код для "твоего" ядра никому не нужен. А нужен код который будет работать
везде.
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 28 авг 2022, 16:36
PaiMeiPetrovich
Olej писал(а): ↑28 авг 2022, 16:31
Далее я запускаю мой цикл по записи константной строки в этот псевдофайл
Какой я болван, я не правильно записал! Константную строку я , конечно же, не записываю в точку входа! В точке входа у меня лежит "period", который может изменить программа. Я хочу его постоянно считывать в цикле
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 28 авг 2022, 16:38
PaiMeiPetrovich
Olej писал(а): ↑28 авг 2022, 16:33
И код для "твоего" ядра никому не нужен. А нужен код который будет работать везде.
Ну да, собственно говоря мне для этого и надо использовать kernel_version, которое я зачем-то выкинул...
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 28 авг 2022, 16:39
PaiMeiPetrovich
Olej писал(а): ↑28 авг 2022, 16:31
.S. По хорошему, значение, записываемое-считываемое, нужно защищать от одновременного изменения node_write и цикла выводящего сообщения - примитивами синхронизации или атомарными операциями ... но это для тебя пока - высшая математика.
Это что-то типа мьютексов, только для ядра?
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 28 авг 2022, 16:42
PaiMeiPetrovich
Olej писал(а): ↑28 авг 2022, 16:31
но это для тебя пока - высшая математика
Кстати, я не боюсь высшей математики! Если надо будет (точнее, когда надо будет) - освоим!
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 28 авг 2022, 16:43
Olej
PaiMeiPetrovich писал(а): ↑28 авг 2022, 16:23
перевожу строку в число ( тот же вопрос, kernel_atoi()??)
simple_strtoul(), sscanf() и др.
Ищется вот так:
Код: Выделить всё
olej@esprimop420:~/2022/PaiMeiPetrovich$ sudo grep ' simple_strtoul' /proc/kallsyms
ffffffff886cdd10 T simple_strtoul
ffffffff886cddb0 T simple_strtoull
Код: Выделить всё
olej@esprimop420:~/2022/PaiMeiPetrovich$ sudo grep ' simple_str' /proc/kallsyms
ffffffff886ccb10 t simple_strntoull
ffffffff886cdd10 T simple_strtoul
ffffffff886cddb0 T simple_strtoull
ffffffff886cde50 T simple_strtoll
ffffffff886cdf10 T simple_strtol
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 28 авг 2022, 16:45
Olej
PaiMeiPetrovich писал(а): ↑28 авг 2022, 16:39
Это что-то типа мьютексов, только для ядра?
Да. В книге есть, целый раздел.
Но пока этого делать не надо.
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 28 авг 2022, 17:07
PaiMeiPetrovich
Такс, ладненько...Сейчас попробую реализовать...
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 28 авг 2022, 20:02
PaiMeiPetrovich
В общем, скидываю что получилось в итоге...
Запускаю мод, он начинает записывать строки в файл каждые 10 секунд.
Потом запускаю приложение, оно перезаписывает информацию в точке входа, меняя период на 1 секунду. (проверял с помощью cat /proc/mod_node)
Но период записи (реальный, не смотря на то, что в файле лежит единица) остается прежнем! Не знаю, в чем дело...
В логе пишет: kernel read not supported for file /mod_node (pid: 26865 comm: insmod)
Может с помощью другой функции считывать из нода, но тогда странно, почему при первой итерации считалось...
Пойду я спать уже крыша немного едет, завтра еще денек есть...
Re: Создание модуля ядра линукс и програмки к этому модулю.
Добавлено: 29 авг 2022, 00:03
Olej
PaiMeiPetrovich писал(а): ↑28 авг 2022, 20:02
Может с помощью другой функции считывать из нода, но тогда странно, почему при первой итерации считалось...
Там много мусора ... я упростил этот код + исправил + отладил ... оставил только 2 файла для простоты.
Вот как это теперь работает:
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ sudo insmod mod_loop.ko
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ lsmod | head -n3
Module Size Used by
mod_loop 16384 0
vboxnetadp 28672 0
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ dmesg | tail -n2
[44272.014597] ! /proc/mod_loop directory created
[44272.014599] ! /proc/mod_loop/period created
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ cat /proc/mod_loop/period
5
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ dmesg | tail -n4
[44272.014597] ! /proc/mod_loop directory created
[44272.014599] ! /proc/mod_loop/period created
[44324.109546] ! return 1 bytes: <5>
[44324.109563] ! return EOF
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ echo 432 > /proc/mod_loop/period
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ dmesg | tail -n6
[43776.427616] ! /proc/mod_loop/period removed
[44272.014597] ! /proc/mod_loop directory created
[44272.014599] ! /proc/mod_loop/period created
[44324.109546] ! return 1 bytes: <5>
[44324.109563] ! return EOF
[44355.436670] ! write: 3 bytes - 432
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ cat /proc/mod_loop/period
432
Ошибочный ввод:
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ echo asdf > /proc/mod_loop/period
bash: echo: ошибка записи: Недопустимый аргумент
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ echo $?
1
А это нормально
:
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ echo 12345asdf > /proc/mod_loop/period
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ cat /proc/mod_loop/period
12345
Код: Выделить всё
olej@R420:~/2022/own.BOOKs/BHV.kernel/PaiMeiPetrovich$ sudo rmmod mod_loop