hello.c
#include#include #include MODULE_LICENSE("GPL");static int hello_init(void){ printk(KERN_ALERT "hello_init"); return 0;}static void hello_exit(void){ printk(KERN_ALERT "hello_exit");}//注册module_init(hello_init);module_exit(hello_exit);MODULE_AUTHOR("heidsoft");MODULE_DESCRIPTION("example.hello.module");MODULE_ALIAS("example");
Makefile
#如果已经定义KERNELRELEASE,则说明从内核构建系统调用#因此可利用其内建语句。ifneq ($(KERNELRELEASE),) obj-m :=hello.o#否则,是直接从命令行调用的。#这时要调用内核构造系统else obj-m :=hello.o KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesendif
lsmod hello.ko //加载模块
rmmod hello //卸载模块
dmesg //打印内核信息