linux设备驱动程序第3版学习笔记(例程2--hellop.c)

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而被修改,则如同模块修改了这个参数的值一样,但是内核不会以任何方式通知模块。大多数情况下,我们不应该

让模块参数是可写的,除非我们打算检测这种修改并作出相应的动作。

 

转载于:https://www.cnblogs.com/yangtuzi/p/7554984.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值