1、c代码
2、Makefile
3、sudo make
4、insmod rmmod cat
5、抄书
由于系统的不同,驱动程序需要的参数也许会发生变化。这包括设备编号,以及其它一些用来控制驱动程序操作方式的参数。例如SCSI适配器驱动程序需要经常处理
一些选项,这些选项用来控制标记命令队列的使用,而集成设备电路驱动程序允许用户控制DAM操作。
为满足这种需求,内核允许对驱动程序指定参数,而这些参数可在装载驱动程序模块时改变。
这些参数的值可在运行insmod或modprobe命令装载模块时赋值,而modprob还可以从它的配置文件(/etc/modprob.conf)中读取参数值。这两个命令可在命令行接收几种
参数类型的赋值。
当然,在insmod改变模块参数之前,模块必须让这些参数对insmod命令可见。参数必须使用module_param宏来声明,这个宏在moduleparam.h中定义。
module_param需要3个参数:变量的名称、类型、用于sysfs入口项的访问许可掩码。这个宏必须放在任何函数之外,通常是在源文件的头部。
内核支持的模块参数类型如下:
bool
invbool
charp 字符指针值
int
long
short
uint
ulong
ushort
module_param中最后一个参数是访问许可值,我们应使用<linux/stat.h>中存在的定义。这个值来控制谁能够访问sysfs中对模块参数的表述。如果
perm被设置为0,就不会有对应的sysfs入口项;否则,模块参数会在/sys/module中出现,并设置为给定的访问许可。如果对参数使用S_IRUGO,则任何人
均可读取该参数,但不能修改;S_IRUGO|S_IWUSR允许root用户修改该参数。
注意:如果一个参数通过sysfs而被修改,则如同模块修改了这个参数的值一样,但是内核不会以任何方式通知模块。大多数情况下,我们不应该
让模块参数是可写的,除非我们打算检测这种修改并作出相应的动作。