模块源码:
// 下面的是主要的内容
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");
static int year=2017;
int hello_init()
{
printk(KERN_WARNING "Hello kernel,it's %d!\n",year);
return 0;
}
void hello_exit()
{
printk("Bye,kernel!\n");
}
// 下面两个为关键的模块函数
module_init(hello_init);
module_exit(hello_exit);
Makefile:
ifneq ($(KERNELRELEASE),)
obj-m := helloworld.o
else
KDIR=/lib/modules/3.5.0-23-generic/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.c *.symvers
endif
执行makefile编译模块-》执行insmod helloworld.ko控制台不会显示printk打印的消息,应该使用 dmesg -c指令。成功看到打印的消息
root@ubuntu:/home/gec/driver# dmesg -c
[706893.639845] Hello kernel,it's 2017!