Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3962316
  • 博文数量: 366
  • 博客积分: 9916
  • 博客等级: 中将
  • 技术积分: 7195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-29 23:27
个人简介

简单!

文章分类

全部博文(366)

文章存档

2013年(51)

2012年(269)

2011年(46)

分类: LINUX

2011-06-19 00:18:01

                                 Hello World模块
 
    许多编程的书籍都是以“hello world”为例,内核的模块也以该部分作为一个例子说明。其示例代码如下。
  1. #include <linux/module.h>
  2. #include <linux/init.h>

  3. MODULE_LICENSE("GPL");
  4. MODULE_AUTHOR("txgcwm");
  5. MODULE_DESCRIPTION("Hello World Module");
  6. MODULE_ALIAS("a simplest module");

  7. static int __init hello_init(void)
  8. {
  9.     printk(KERN_EMERG"Hello World!\n");
  10.     return 0;
  11. }

  12. static void __exit hello_exit(void)
  13. {
  14.     printk(KERN_EMERG"hello exit\n");
  15. }

  16. module_init(hello_init);
  17. module_exit(hello_exit);
1、所有的模块代码中都包含以上两个头文件;
2、MODULE_XXXX是模块相关的文档信息;
3、printk是内核打印函数;
4、module_init和module_exit是用于指定模块初始化和清除函数的宏;
5、如果不能看到控制台输出相关的信息,则就需要好好查一下使用的‘日志级别字符串’;
 
 
以下是模块的makefile:
  1. ifneq ($(KERNELRELEASE),)
  2. obj-m := hello.o
  3. else

  4. KDIR := /lib/modules/$(shell uname -r)/build
  5. all:
  6.  make -C $(KDIR) M=$(PWD) modules
  7. clean:
  8.  rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
  9. endif
阅读(2701) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

txgc_wm2011-06-19 00:49:47

内核调试技术可参考链接:http://blogold.chinaunix.net/u/1214/showart_431352.html