Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7570684
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2011-02-25 10:20:18

  1. # 文件名:Makefile
  2. # 说明:2.6 内核模块编译

  3. ifeq ($(KERNELRELEASE),) # 如果 KERNELRELEASE 无定义,说明是在当前目录
  4.   KERNELDIR ?= /lib/modules/$(shell uname -r)/build # 内核目录
  5.   PWD := $(shell pwd) # 当前目录
  6. default:
  7.     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules # MAKE 变量的默认值就是 make
  8. clean:
  9.     # 删除编译时产生的文件 #
  10.     -rm -f demo.ko
  11.     -rm -f demo.o
  12.     -rm -rf .tmp_versions
  13.     -rm -f .*.cmd
  14.     -rm -f *.mod.c
  15.     -rm -f *.mod.o
  16.     -rm -f Module.symvers
  17.     -rm -f modules.order
  18. else # 如果 KERNELRELEASE 已定义,说明是被内核的 Makefile 引用
  19.   obj-m := demo.o
  20. endif
  1. /* 文件名:demo.c */
  2. /* 说明:内核模块例程 */

  3. #include <linux/module.h> /* 内核模块编程所需的头文件 */

  4. MODULE_LICENSE("GPL"); /* 版权声明 */

  5. static int num = 0; /* 定义全局变量 num */
  6. module_param(num, int, S_IRUGO); /* 将 num 指定为整型的模块参数 */
  7. static char *str = ""; /* 定义全局字符指针 str */
  8. module_param(str, charp, S_IRUGO); /* 将 str 指定为字符串型的模块参数 */

  9. static char ch[5] = {'\0', '\0', '\0', '\0', '\0'}; /* 定义数组 */
  10. static int nr_ch = 0; /* 整型变量用于存放元素个数 */
  11. module_param_array(ch, byte, &nr_ch, S_IRUGO); /* 指定 ch 为模块参数 */

  12. /* 模块的初始化函数 */
  13. static __init int demo_init(void)
  14. {
  15.     int i;
  16.     printk(KERN_ALERT "demo_init: be called.\n");
  17.     printk(KERN_ALERT "demo_init: num = %d, str = %s\n", num, str);
  18.     printk(KERN_ALERT "demo_init: ch = ");
  19.     for (i = 0; i < nr_ch; i++) printk("%c ", ch[i]);
  20.     printk("\n");
  21.     return 0;
  22. }

  23. /* 模块的退出函数 */
  24. static __exit void demo_exit(void)
  25. {
  26.     printk(KERN_ALERT "demo_exit: be called.\n");
  27. }

  28. module_init(demo_init); /* 指定 demo_init 为初始化函数 */
  29. module_exit(demo_exit); /* 指定 demo_exit 为退出函数 */
阅读(1201) | 评论(0) | 转发(2) |
0

上一篇:字符设备驱动

下一篇:等待队列例程

给主人留下些什么吧!~~