读书笔记 Linux设备驱动程序(一) 0.02

  
        驱动程序的参数值可由insmod或者modprobe在装载模块时设置,后者还可以从配置文件(/etc/modules.conf)中获得参数赋值。这些命令能够在命令行中接受整型和字符串型赋值。如:模块需要获得一个叫做skull_ival的整型参数和一个叫做skull_sval的字符串型参数:
               insmod skull skull_ival=666 skull_sval="the beast"
        当然,模块必须能够访问这些参数。参数由定义在module.h中的宏MODULE_PARM声明,它必须包含:变量名和描述变量类型的字符串。放在原文件的起始位置
               int skull_ival=0;
               char *skull_val;
              
               MODULE_PARM(skull_ival,"i");
               MODULE_PARM(skull_sval,"s");
五种类型:b,一个字节byte;h,短整型 两个byte;i,整型;l 长整型;s,字符串。

        作为一个例子,至少有两个元素、最多不超过4个元素的数组可定义为:
               int skull_array[4];
               MODULE_PARM(skull_array,"2-4i");

        还有一个MODULE_PARM_DESC的宏,允许开发者为模块参数提供描述性文字,描述性文字存储在目标文件中,能够用类似objdump的工具查看:
               int base_port = 0x300;
               MODULE_PARM(base_port,"i");
               MODULE_PARM_DESC(base_port,"The base I/O port(default 0x300)");


#include
               void *kmalloc(unsigned int size,int priority);
               void kfree(void *obj);
       函数malloc和free的内核版。使用GFR_KERNEL作为priority参数值。

你可能感兴趣的:(读书笔记(Linux设备驱动))