Chinaunix首页 | 论坛 | 博客
  • 博客访问: 387998
  • 博文数量: 115
  • 博客积分: 2501
  • 博客等级: 少校
  • 技术积分: 1009
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-23 17:05
文章分类

全部博文(115)

文章存档

2011年(2)

2010年(86)

2009年(27)

我的朋友

分类: 嵌入式

2010-08-02 23:06:31

Linux内核允许在加载模块时变化参数,这使得驱动的加载更具灵活性。下面是我的学习内容,虚拟机下编译x86平台的内核模块。
module_param.c
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int howmany = 1;
static char *whom = "world";
module_param(howmany,int,S_IRUGO);
module_param(whom,charp,S_IRUGO);
static int module_param_init(void)
{
    printk(KERN_ALERT "Enter module_param_init\n");
    printk(KERN_ALERT "whom is %s,howmany = %d\n",whom,howmany);
    return 0;
}
static int module_param_exit(void)
{
    printk(KERN_ALERT "Leave module_param_exit\n");
    return 0;
}
module_init(module_param_init);
module_exit(module_param_exit);
Makefile
obj-m = module_param.o
module-objs := module_param.o
KERNELDIR = /lib/modules/$(shell uname -r)/build
PWD = $(shell pwd)
all:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
    rm -rf *.o *~ *.mod.c *.mod.o *.order *.symvers *.markers *.ko
 
首先还是通过命令“tail -f /var/log/kern.log”打开日志,然后加载模块。命令“insmod module_param.ko howmany=12345 whom=mark”执行完之后,日志信息里面多出了“Aug  2 07:58:31 ubuntu kernel: [ 8618.300111] whom is mark,howmany = 12345”一串信息,与驱动加载函数中的打印信息相符。若使用命令“insmod module_param.ko”,即不加参数,日志信息中将显示默认的模块参数值“Aug  2 08:05:08 ubuntu kernel: [ 9014.652497] whom is world,howmany = 1”。
阅读(395) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~