Chinaunix首页 | 论坛 | 博客
  • 博客访问: 430048
  • 博文数量: 77
  • 博客积分: 2948
  • 博客等级: 少校
  • 技术积分: 912
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-16 15:34
文章分类

全部博文(77)

文章存档

2014年(9)

2013年(9)

2011年(26)

2010年(33)

分类: LINUX

2010-12-31 17:57:39

hello world!模块
  hello.c   
    #include
    #include   // 这两个头文件包含相应宏定义    
    MODULE_LICENSE("GPL");   // 告知内核,这是free模块
    static int __init hello_init(void)   // 模块进入函数
    {
          printk(KERN_ALERT "Hello World\n");       
    return 0;
    }
    static void __exit hello_exit(void)  // 模块退出函数
    {
           printk(KERN_ALERT "Hello World exit\n");
    }    
    module_init(hello_init);    // 初始化
    module_exit(hello_exit);   // 退出     
    MODULE_AUTHOR("Di Zhuang"); // 作者声明
    MODULE_DESCRIPTION("A simple Hello World Module");
    MODULE_ALIAS("a simplest module");

 
Makefile:    
 
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KDIR := /lib/modules/2.6.18-194.8.1.el5/build
all:
   make -C $(KDIR) M=$(PWD) modules
clean:
   rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif

加载 insmod  insmod hello.ko
卸载 rmmod   rmmod hello
查看 lsmod
加载 modprobe  modprobe hello 看加载的文件是否依赖其他文件,如果是,则会先找到这些模块,把他们先加载到内核
 
MODULE_LICENSE("GPL")  许可证申明
MODULE_AUTHOR(“Simon Li");  作者
MODULE_DESCRIPTION("Hello World Module"); 模块描述
MODULE_VERSION("V1.0");    模块版本
MODULE_ALIAS("a simple module"); 模块别名
module_param(name,type,perm) 模块参数
 
EXPORT_SYMBOL(符号名)
EXPORT_SYMBOL_GPL(符号名)
 
 
常见问题:
 
内核模块版本  与正在运行的内核版本必须一致
 

    
阅读(757) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-01-04 14:58:06

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com