10. linux 驱动模块参数

TOC

1. 相关接口

module_param(参数名,参数类型,参数读/写权限)


module_param_array(数组名,数组类型,数组长,参数读/写权限)

说明:

  1. 参数和参数类型,需保持一致
  2. 参数类型有: byte、short、ushort、int、uint、long、ulong、charp(字符指针)、bool 或 invbool(布尔的反)
  3. 数组长一般设置为 NULL
  4. 模块加载后可以在/sys/module/模块名/parameters目录下查看参数

2. 代码样例

hello.c

#include <linux/init.h> 
#include <linux/kernel.h> 
#include <linux/module.h> 


static int value = 30;
static int value_arr[3] = {1, 2, 3};




static int __init hello_init(void) 
{ 
    printk("init hello module
"); 
    return 0; 
} 


static void __exit hello_exit(void) 
{ 
    printk("exit hello module
"); 
} 


module_init(hello_init); 
module_exit(hello_exit);


module_param(value, int, 0644);
module_param_array(value_arr, int, NULL, 0644);


MODULE_LICENSE("GPL"); 

Makefile

KERNEL_DIR=/usr/src/linux-headers-3.13.0-24-generic 
all: 
        make -C $(KERNEL_DIR) M=`pwd` modules 


clean: 
        make -C $(KERNEL_DIR) M=`pwd` clean 


obj-m += hello.o

3. 编译运行

$ make
$ sudo inmod hello.ko
$ lsmod | grep hello
hello                  12703  0 
$ cd /sys/module/hello/parameters
$ ls 
value  value_arr
$ cat value
30
$ cat value_arr
1,2,3

目的:我们将驱动参数传递出来方便查询驱动的运行情况

原文地址:https://www.cnblogs.com/standardzero/p/12551109.html