我刚刚开始编写一个字符驱动程序。所以,当我插入我的第一个驱动程序代码时,它从 init_module1 打印“hello kernel”,从内核日志中的退出模块打印“Bye kernel”。当我插入驱动程序并使用 dmesg 查看内核日志时,我找不到“Hello kernel”消息,但是当我删除驱动程序(使用 rmmod)时,我在日志中同时得到“Hello kernel”和“Bye kernel”。无法弄清楚如何以及为什么。这是我的代码...
头文件.h
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("GPL");
初始化文件
#include"header.h"
static int init_module1(void)
{
printk(KERN_ALERT "Hello kernel");
return 0;
}
module_init(init_module1);
退出.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