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

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

  • 相关阅读:
    The provided URI scheme 'http' is invalid; expected 'https'. Parameter name: via
    WCF传递Stream时,同时传递其它参数的问题
    DotNet NB 学习公众号
    军师旅团营连排班各有多少人
    OAuth 2.0学习
    人生三境界
    Mac OS安装Windows各版本时注意事项(2014年后的Mac机相信会有这些问题)
    C#中winform使用相对路径读取文件的方法
    Sql Server Report Service 的部署问题(Reporting Service 2014為什麼不需要IIS就可以運行)
    Reporting Services报表常用的URL参数
  • 原文地址:https://www.cnblogs.com/yangtuzi/p/7554984.html
Copyright © 2011-2022 走看看