Chinaunix首页 | 论坛 | 博客
  • 博客访问: 175862
  • 博文数量: 32
  • 博客积分: 499
  • 博客等级: 下士
  • 技术积分: 347
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-22 14:47
文章存档

2012年(10)

2011年(19)

2010年(3)

分类: LINUX

2011-01-14 15:58:30

内核允许对驱动程序指定参数,而这些参数可在装载驱动程序模块时改变
以下是我的实验程序:
  1. #include<linux/init.h>
  2. #include<linux/module.h>
  3. #include<linux/moduleparam.h>

  4. static char *whom = "guixiao198881";
  5. static int howmany = 1;
  6. static int guixiao[] = {1,2,3,4};
  7. static int guixiao_n = 4;
  8. module_param(howmany,int,S_IRUGO);
  9. module_param(whom,charp,S_IRUGO);
  10. module_param_array(guixiao,int,&guixiao_n,S_IRUGO);

  11. static int __init hello_init(void)
  12. {
  13.     int i;
  14.     for (i = 0; i < howmany; i++)
  15.         printk(KERN_ALERT "(%d) Hello, %s !\n", i, whom);
  16.     for (i = 0; i < 4; i++)
  17.         printk(KERN_ALERT "guixiao[%d] : %d \n", i, guixiao[i]);
  18.     return 0;
  19. }

  20. static void __exit hello_exit(void)
  21. {
  22.     printk(KERN_ALERT "Goodbye, guixiao198881 !\n");
  23. }


  24. MODULE_LICENSE("Dual BSD/GPL");
  25. module_init(hello_init);
  26. module_exit(hello_exit);
编译后,在安装时候,加参数和不加参数的区别。
如果不加参数:
insmod hello.ko
  1. [10231.944033] (0) Hello, guixiao198881 !
  2. [10231.944044] guixiao[0] : 1
  3. [10231.944051] guixiao[1] : 2
  4. [10231.944056] guixiao[2] : 3
  5. [10231.944062] guixiao[3] : 4
加入参数以后:
insmod hello.ko whom="ljj" howmany=3 guixiao=4,3,2,1
  1. [10292.789489] (0) Hello, ljj !
  2. [10292.789497] (1) Hello, ljj !
  3. [10292.789502] (2) Hello, ljj !
  4. [10292.789507] guixiao[0] : 4
  5. [10292.789511] guixiao[1] : 3
  6. [10292.789515] guixiao[2] : 2
  7. [10292.789519] guixiao[3] : 1






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