带参数到内核模块

原创 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) |
相关热门文章
给主人留下些什么吧!~~
评论热议
版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

内核模块编程之进阶(三)-编写带参数的中断模块

在此,我们将编写一个模块,其中有一个中断函数,当内核接收到某个 IRQ 上的一个中断时会调用它。 #include linux/init.h> #include linux...

使用module_param来向内核模块传递参数

如果希望给一个内核模块传递参数,则可以通过module_param()。参数用moudle_param宏定义来声明,它定义在moduleparam.h。下面是module_param宏的定义:/* T...

内核模块参数示例

我们可以用 “module_param(参数名,参数类型,参数读/写权限)”为模块定义一个参数,例如下列代码定义了一个整型参数和一个字符指针参数: static char *book_name...

内核模块 module_param()传递参数

 module_param static char *book_name = "dissecting Linux Device Driver"; static int num = 4000; ...

使用module_param来向内核模块传递参数

http://blog.csdn.net/sttypxx520/article/details/2579679 如果希望给一个内核模块传递参数,则可以通过module_param()。 ...

linux 内核模块 参数

module_param()理解 ------------------------------------------- 在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则...

内核模块 参数

module_param()理解 ------------------------------------------- 在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则...

insmod 内核模块时参数传递 应用篇

内核模块参数传递      在看omap vout.c 的模块时候发现了一些关于LCD和输出的参数是由u-boot中的命令行传递而来。分析一下内核模块的参数传递问题。究竟是如何实现的。 以下内容...

linux内核模块参数

模块参数 一。  param.c #include linux/module.h> #include linux/init.h>   MODULE_LICENSE(...

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

(注:内核版本号:linux-3.4.106-ubuntu)   一.            模块编程(a.     &...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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