Журнал ядра не будет отображать "Hello kernel", пока драйвер не будет удален

Я только начал писать символьный драйвер. Итак, я вставил свой первый код драйвера, который печатает "hello kernel" из init_module1 и "Bye kernel" из модуля выхода в журнале ядра. Когда я вставляю драйвер и использую dmesg для просмотра журнала ядра, я не могу найти сообщение "Hello kernel", но когда я удаляю драйвер (используя rmmod), я получаю как "Hello kernel", так и "Bye kernel" в журнале. Не могу понять, как и почему. Это мой код...

header.h

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

    MODULE_LICENSE("GPL");

init.c

    #include"header.h"

    static int init_module1(void)
    {
      printk(KERN_ALERT "Hello kernel");
      return 0;
    }
    module_init(init_module1);

exit.c

    #include"header.h"

    static void exit_module(void)
    {
      printk(KERN_ALERT "Bye Kernel");
    }
    module_exit(exit_module);

Makefile-

    INSTALLDIR= $(shell pwd)/modules
    ifneq ($(KERNELRELEASE),)
    obj-m := c.o
    c-objs := init.o exit.o

    else
              KERNDIR ?= /lib/modules/$(shell uname -r)/build
              PWD := $(shell pwd)

    default:
              $(MAKE) -C $(KERNDIR) M=$(PWD) modules
              @rm -rf $(INSTALLDIR)
              @mkdir $(INSTALLDIR)
              @mv *.ko *.mod.c *.o .*.cmd $(INSTALLDIR)

    clean:
              rm -rf $(INSTALLDIR)

    endif

1 ответ

Решение

Журнал ядра обрабатывает только полные строки. Добавьте недостающий символ новой строки:

     printk(KERN_ALERT "Hello kernel\n");
Другие вопросы по тегам