linux内核研究-10-模块
1,说在前面
都说十全十美,这是内核研究的第十篇了,这也是linux内核研究系列的最后一篇。虽然《深入理解linux内核》看了多遍,《linux内核设计与实现》看了多遍,也写过几个内核模块,这次学习还是收获不少。
2,下面就以一个hello world模块结束这次linux内核之旅吧
//===
hello.c:
//===
/*
* $Id: hello.c,v 1.0 2012/04/20 14:16:21 Rill zhen:rill_zhen@126.com $
*/
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
//===
Makefile
//===
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KERNELSRC :=/home/Rill/linux-2.6.19
modules:
make -C $(KERNELSRC) SUBDIRS=$(PWD) $@
clean:
rm -f *.o *.ko *.mod.c *~
endif
//===
commond:
//===
加载模块:
modprobe hello.ko 或insmod hello.ko
最好用modprobe,会检查依赖关系。
卸载模块:
modprobe -r hello.ko 或rmmod hello.ko
与上面的加载命令对应使用。