Hello World模块
许多编程的书籍都是以“hello world”为例,内核的模块也以该部分作为一个例子说明。其示例代码如下。
-
#include <linux/module.h>
-
#include <linux/init.h>
-
-
MODULE_LICENSE("GPL");
-
MODULE_AUTHOR("txgcwm");
-
MODULE_DESCRIPTION("Hello World Module");
-
MODULE_ALIAS("a simplest module");
-
-
static int __init hello_init(void)
-
{
-
printk(KERN_EMERG"Hello World!\n");
-
return 0;
-
}
-
-
static void __exit hello_exit(void)
-
{
-
printk(KERN_EMERG"hello exit\n");
-
}
-
-
module_init(hello_init);
-
module_exit(hello_exit);
1、所有的模块代码中都包含以上两个头文件;
2、MODULE_XXXX是模块相关的文档信息;
3、printk是内核打印函数;
4、module_init和module_exit是用于指定模块初始化和清除函数的宏;
5、如果不能看到控制台输出相关的信息,则就需要好好查一下使用的‘日志级别字符串’;
以下是模块的makefile:
-
ifneq ($(KERNELRELEASE),)
-
obj-m := hello.o
-
else
-
-
KDIR := /lib/modules/$(shell uname -r)/build
-
all:
-
make -C $(KDIR) M=$(PWD) modules
-
clean:
-
rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
-
endif
阅读(2753) | 评论(1) | 转发(0) |