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)

  • 相关阅读:
    2018 校招在线编程 20题-01
    ubuntu 配置muduo库
    plsql远程访问配置
    web开发转发和重定向大比拼
    Eclipse中svn同步忽略设置
    静态方法、实例方法和域
    接口中的域
    屏蔽所有异常的方法
    使用axis2时在temp文件产生大量缓存
    spring boot redis分布式锁 (转)
  • 原文地址:https://www.cnblogs.com/lvxiaoning/p/5154770.html
Copyright © 2011-2022 走看看