Я новичок. Я написал модуль hello world (фактически скопированный из книги О'Рейли). код:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "\nHello World");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "\nGood bye");
}
module_init(hello_init);
module_exit(hello_exit);
Так что, когда я вставлю модуль, появится dmesg nothig. Но когда я удаляю его, а затем dmesg, я вижу
Hello World
Good Bye
Это вызвано тем, что буфер не очищен при печати "\nHello мира" и очищенный в конечном счете при удалении модуля.
Для преднамеренной очистки буфера вместо этого распечатайте
Hello world\n
и точно так же
Good bye\n
Примечание новая строка \n
в конце каждого printk
оператор.
Отсылают к этому ТАК вопрос знать, почему новая строка необходима: