zoukankan      html  css  js  c++  java
  • Linux 总线设备驱动模型 (一)

    总线设备驱动模型

      一. 总线模型概述

        随着技术的不断进步,系统的拓扑结构也越来越复杂,对热插拔,跨平台移植性的要求也越来越高,

        2.4内核已经难以满足这些需求。为适应这种形势的需要,从Linux2.6内核开始提供了全新的设备模型。

      二. 总线

        1. 描述设备

          1. 在Linux 内核中, 总线由bus_type结构表示, 定义在<linux/device.h>

           structbus_type

           {

            const char*name; /*总线名称*/

            int(*match)  (structdevice *dev, structdevice_driver*drv);    /*驱动与设备的匹配函数*/

            ………

           }

           2. int(*match)(structdevice * dev, structdevice_driver* drv)

              当一个新设备或者新驱动被添加到这个总线时,该函数被调用。用于判断指定的驱动程序是否能处理指定的设备。若可以,则返回非零。

        2. 注册

          总线的注册使用如下函数bus_register(structbus_type*bus)若成功,新的总线将被添加进系统,并可在/sys/bus 下看到相应的目录

        3. 注销

          总线的注销使用函数 : void bus_unregister(structbus_type*bus) 

      三. 驱动

        1. 描述设备 

          在Linux内核中, 驱动由device_driver结构表示。

          structdevice_driver

          {

           const char*name; /*驱动名称*/

             structbus_type*bus;  /*驱动程序所在的总线*/

           int(*probe) (structdevice *dev);

           ………

          }

        2. 注册

          #驱动的注册使用如下函数

            intdriver_register(structdevice_driver*drv)

        3. 注销

          #驱动的注销使用如下函数

            void driver_unregister(structdevice_driver*drv)

      四. 设备

        1. 描述设备

          在Linux内核中, 设备由structdevice结构表示。

          structdevice 、

          {

            const char *init_name;  /*设备的名字*/

            struct bus_type*bus;  /*设备所在的总线*/

            ………

          }

        2. 注册

          #设备的注册使用如下函数

           intdevice_register(structdevice *dev)

        3. 注销

          #设备的注销使用以下函数

          void device_unregister(structdevice *dev)

  • 相关阅读:
    学习PetShop3.0(9)工厂的资料
    net程序架构开发
    《解剖PetShop》系列之一
    与数据库相关的名词解释
    asp 导出Excel
    《解剖PetShop》系列之二
    业务模块的设计原则
    《解剖PetShop》系列之三
    JAVA之BigInteger(转)【转】【很好用啊】
    php_mcrypt.dll无法加载解决方法
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/5154770.html
Copyright © 2011-2022 走看看