内核日志不会显示" Hello kernel"直到司机被移除

时间:2014-06-20 12:03:19

标签: linux-kernel linux-device-driver insmod

我刚刚开始编写一个字符驱动程序。所以,当我插入我的第一个驱动程序代码打印" hello kernel"来自init_module1和"再见内核"来自内核日志中的exit模块。当我插入驱动程序并使用dmesg查看内核日志时,我无法找到" Hello内核"消息,但当我删除驱动程序(使用rmmod)我得到两个" Hello内核"以及"再见内核"在日志中。 无法弄清楚&为什么。这是我的代码......

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);

生成文件 -

    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 个答案:

答案 0 :(得分:2)

内核日志只处理完整的行。 添加缺少的新行字符:

     printk(KERN_ALERT "Hello kernel\n");