module_param和module_param_array

来源:互联网 发布:vb.net 反向tab 编辑:程序博客网 时间:2024/05/17 02:21

module_param(name, type, perm)

name:

    模块參数名称(就像一个变量名一样)

type:

    参数类型(同样类似于变量类型),有byte(unsigned char), short, ushort, int, uint, long, ulong, charp(相当于char *,不超过1024字节的字符串), bool, invbool(反bool)

perm:

    权限,有:

    #define S_IRUSR    00400 文件所有者可读
           #define S_IWUSR   00200 文件所有者可写
           #define S_IXUSR    00100 文件所有者可执行
           #define S_IRGRP   00040 与文件所有者同组的用户可读
           #define S_IWGRP  00020
           #define S_IXGRP   00010
           #define S_IROTH   00004 与文件所有者不同组的用户可读
           #define S_IWOTH  00002
           #define S_IXOTH   00001

    将数字最后三位转化为二进制:xxx xxx xxx,高位往低位依次看,第一位为1表示文件所有者可读,第二位为1表示文件所有者可写,第三位为1表示文件所有者可执行;接下来三位表示文件所有者同组成员的权限;再下来三位为不同组用戶权限.

    00400 ==> 400 ==> 100 000 000

 

module_param_array(name, type, num, perm)

name, type, perm同module_param

num:

    num为整型指针,保存元素个数

 

module_param和module_param_array使用举例:

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/moduleparam.h>
#define SIZE 10
static int int_param;
static char *string_param;
static int array_param[SIZE], num;
module_param(int_param, int, S_IRUSR);
module_param(string_param, charp, S_IRUSR);
module_param_array(array_param, int, &num, S_IRUSR);
static int __init hello_init(void){
    int i;
    printk(\"<3>int_param: \");
    printk(\"%d\", int_param);
    printk(\"/n\");
    printk(\"string_param: \");
    printk(string_param);
    printk(\"/n\");
    printk(\"array_param: \");
    printk(\"%d\", array_param[0]);
       
    for (i = 1; i < num; i++) {
        printk(\",\");
        printk(\"%d\", array_param[i]);
    }
    printk(\"/n\");
    return 0;
}
static void __exit hello_exit(void){
    printk(\"<3>Bye./n\");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE(\"GPL\");


 

 

本文转自:http://blog.csdn.net/pickless/article/details/5400131

原创粉丝点击