带参数到内核模块

原创 2016年08月31日 12:07:18
hellop.c 文件内容如下:
  1. /*
  2.  * $Id: hellop.c,v 1.4 2004/09/26 07:02:43 gregkh Exp $
  3.  */
  4. #include <linux/init.h>
  5. #include <linux/module.h>
  6. #include <linux/moduleparam.h>

  7. MODULE_LICENSE("Dual BSD/GPL");

  8. /*
  9.  * These lines, although not shown in the book,
  10.  * are needed to make hello.c run properly even when
  11.  * your kernel has version support enabled
  12.  */


  13. /*
  14.  * A couple of parameters that can be passed in: how many times we say
  15.  * hello, and to whom.
  16.  */
  17. static char *whom = "world";
  18. static int howmany = 1;
  19. module_param(howmany, int, S_IRUGO);
  20. module_param(whom, charp, S_IRUGO);

  21. static int hello_init(void)
  22. {
  23.         int i;
  24.         for (i = 0; i < howmany; i++)
  25.                 printk(KERN_ALERT "(%d) Hello, %s\n", i, whom);
  26.         return 0;
  27. }
  28. static void hello_exit(void)
  29. {
  30.         printk(KERN_ALERT "Goodbye, cruel world\n");
  31. }

  32. module_init(hello_init);
  33. module_exit(hello_exit);
Makefile 文件内容如下:
  1. # To build modules outside of the kernel tree, we run "make"
  2. # in the kernel source tree; the Makefile these then includes this
  3. # Makefile once again.
  4. # This conditional selects whether we are being included from the
  5. # kernel Makefile or not.
  6. ifeq ($(KERNELRELEASE),)

  7. # Assume the source tree is where the running kernel was built
  8. # You should set KERNELDIR in the environment if it's elsewhere
  9. KERNELDIR ?= /lib/modules/$(shell uname -r)/build
  10. # The current directory is passed to sub-makes as argument
  11. PWD := $(shell pwd)

  12. modules:
  13. $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

  14. modules_install:
  15. $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

  16. clean:
  17. rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

  18. .PHONY: modules modules_install clean

  19. else
  20. # called from kernel build system: just declare what our modules are
  21. obj-m := hellop.o
  22. endif
$ make  编译
$ sudo insmod hellop.ko howmany=10 whom="Tom"  加载模块

在/var/log/syslog中打印信息如下:
  1. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364464] (0) Hello, Tom
  2. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364468] (1) Hello, Tom
  3. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364470] (2) Hello, Tom
  4. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364471] (3) Hello, Tom
  5. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364473] (4) Hello, Tom
  6. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364474] (5) Hello, Tom
  7. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364476] (6) Hello, Tom
  8. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364477] (7) Hello, Tom
  9. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364479] (8) Hello, Tom
  10. Jun 21 16:12:33 eric-Inspiron-530 kernel: [23155.364480] (9) Hello, Tom

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(287) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/chituhuan/article/details/52383616

linux内核模块参数

在装载内核模块时,用户可以向模块传递参数,形式为: insmod/modprobe 模块名 参数名 =   参数值 如果不传递,参数将使用模块内定义的缺省值。      我们可以使用以下方法为模...
  • weicao1990
  • weicao1990
  • 2014-07-30 14:30:39
  • 484

Linux 内核 给模块传递参数

对于如何向模块传递参数,Linux kernel 提供了一个简单的框架。其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值,在驱动程序里,参数的用法如同全局变量。 使用下面的...
  • Dybinx
  • Dybinx
  • 2012-07-08 12:06:35
  • 5043

Linux内核学习-内核模块参数module_param

Linux2.6允许用户insmod的时候往内核模块里面传递参数,它主要使用module_param宏定义来实现这一功能。module_param的定义可以在include/linux/modulep...
  • Yao_GUET
  • Yao_GUET
  • 2011-06-13 19:07:00
  • 6927

Linux内核模块传递参数

如果需要向内核模块中传递参数,可以使用函数: module_param(参数名,参数类型,读写权限) 1). 参数名称:不必解释 2). 参数类型: byte, short, short, in...
  • miaohongyu1
  • miaohongyu1
  • 2014-03-03 17:21:46
  • 658

带参数的内核模块

hello.c #include #include char *p="Twenty-four"; MODULE_LICENSE("GPL"); module_para...
  • gufuguang
  • gufuguang
  • 2013-08-11 20:08:56
  • 306

内核模块 module_param()传递参数

 module_param static char *book_name = "dissecting Linux Device Driver"; static int num = 4000; ...
  • jinchengzhou
  • jinchengzhou
  • 2015-07-21 15:17:06
  • 989

Linux内核模块:模块参数

Linux内核模块:模块参数
  • bryan_3099
  • bryan_3099
  • 2015-07-06 15:06:59
  • 531

刚写的一个unix作业,关于内核编程的--2010-1-8 18:13

转自我另一个的博客,书写日期2010-1-8 18:13作业题目:内核模块编程练习设计两个内核模块,它们分别完成以下工作:1) 设计一个模块,该模块的功能是列出系统中所有内核进程的程序名、PID号和进...
  • cztchoice
  • cztchoice
  • 2010-05-21 13:50:00
  • 1195

ubuntu 内核模块编程+模块参数传递+模块符号表输出

(注:内核版本号:linux-3.4.106-ubuntu)   一.            模块编程(a.         hello模块  b.hello传递参数test  c.符号输出表) a)...
  • Debug_Snail
  • Debug_Snail
  • 2016-08-06 18:08:48
  • 465

Linux内核模块的编写方法和技巧

内核模块可以在不重新编译内核的情况下添加到内核代码中运行,其可以动态加载和卸载,因此可以根据需要将内核某些功能独立出来作为模块,而不是编译到内核中,这样可以减少内核大小,并且可以按照实际需求选择裁剪或...
  • jasonchen_gbd
  • jasonchen_gbd
  • 2015-04-12 12:44:46
  • 1933
收藏助手
不良信息举报
您举报文章:带参数到内核模块
举报原因:
原因补充:

(最多只允许输入30个字)