Рейтинг:0

Выходное сообщение модуля ядра будет напечатано в следующий раз при вставке модуля

флаг co

Я написал простой модуль ядра для печати Hello kernel msg.

my_module.c

#include <linux/module.h>
#include <linux/init.h>

/* Метаинформация */
MODULE_LICENSE("GPL");
MODULE_AUTHOR("БХАГВАТ");
MODULE_DESCRIPTION("МОДУЛЬ ПРИВЕТ, МИР");

/*эта функция вызывается при загрузке модуля в ядро*/

статический интервал __init ModuleInit (пустой)
{
    printk("Привет, ядро!\n");
    вернуть 0;
}

/*эта функция вызывается при удалении модуля из ядра*/
статическая пустота __exit ModuleExit (пустота)
{
    printk("До свидания, ядро");
}

модуль_инит (ModuleInit);
module_exit(ModuleExit);

Makefile

obj-m += my_module.o

все:
    make -C /lib/modules/$(shell uname -r)/сборка модулей M=$(PWD)

чистый:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) очистить

когда я вставляю модуль, я печатаю сообщение в журналах ядра, но когда я удаляю модуль, сообщение не печатается. Когда я снова вставляю модуль, печатаются два сообщения: одно для выхода из последнего модуля, а другое для загрузки модуля. Почему сообщение о выходе из модуля печатается позже, когда я вставляю модуль, а не при удалении модуля.

bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | хвост
[ 24.595403] rfkill: включен обработчик ввода
[ 30.244336] rfkill: обработчик ввода отключен
[145.426767] my_module: проверка модуля не удалась: подпись и/или требуемый ключ отсутствуют - заражение ядра
[ 145.427022] Привет, ядро!
[ 217.026559 ] Прощай, ядро
[498.489388] Привет, ядро!
[ 524.139613 ] Прощай, ядро
[ 528.270128] Привет, ядро!
[ 577.360611 ] Прощай, ядро
[ 587.700237] Привет, ядро!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module 
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | хвост
[ 24.595403] rfkill: включен обработчик ввода
[ 30.244336] rfkill: обработчик ввода отключен
[145.426767] my_module: проверка модуля не удалась: подпись и/или требуемый ключ отсутствуют - заражение ядра
[ 145.427022] Привет, ядро!
[ 217.026559 ] Прощай, ядро
[498.489388] Привет, ядро!
[ 524.139613 ] Прощай, ядро
[ 528.270128] Привет, ядро!
[ 577.360611 ] Прощай, ядро
[ 587.700237] Привет, ядро!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | хвост
[145.426767] my_module: проверка модуля не удалась: подпись и/или требуемый ключ отсутствуют - заражение ядра
[ 145.427022] Привет, ядро!
[ 217.026559 ] Прощай, ядро
[498.489388] Привет, ядро!
[ 524.139613 ] Прощай, ядро
[ 528.270128] Привет, ядро!
[ 577.360611 ] Прощай, ядро
[ 587.700237] Привет, ядро!
[ 667.900373 ] Прощай, ядро
[ 676.245356] Привет, ядро!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module 
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | хвост
[145.426767] my_module: проверка модуля не удалась: подпись и/или требуемый ключ отсутствуют - заражение ядра
[ 145.427022] Привет, ядро!
[ 217.026559 ] Прощай, ядро
[498.489388] Привет, ядро!
[ 524.139613 ] Прощай, ядро
[ 528.270128] Привет, ядро!
[ 577.360611 ] Прощай, ядро
[ 587.700237] Привет, ядро!
[ 667.900373 ] Прощай, ядро
[ 676.245356] Привет, ядро!
флаг hr
Возможно, потому что в конце вашего сообщения «До свидания, ядро» нет новой строки? См., например, [printk буферизуется строкой?] (https://stackoverflow.com/questions/13538618/printk-is-line-buffered)
Jeff avatar
флаг mx
Какую версию ядра вы используете? Предположительно это 5,4, верно?
Рейтинг:0
флаг in

используйте '\n' в инструкции printk модуля выхода printk("До свидания, ядро\n");

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.