module_param和module_param_array

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");

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值