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

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

  • 相关阅读:
    Python float() 函数
    Python bytearray() 函数
    scanner.nextInt()与scanner.nextDouble
    Scanner对象next与nextLine
    JavaDoc
    包机制
    运算符要点
    变量与常量
    test
    类型转换
  • 原文地址:https://www.cnblogs.com/yangtuzi/p/7554984.html
Copyright © 2020-2023  润新知