Linux设备驱动模型摘抄Linux设备驱动模型摘抄Linux设备驱动模型摘抄Linux设备驱动模型摘抄Linux设备驱动模型摘抄

Linux设备驱动模型摘抄(1)

Linux统一设备模型

简介

Linux2.6内核提供了新的设备模型,目的是为了对计算机上的所有设备进行统一地表示和操作,包括设备本身和设备之间的连接关系。这个模型是在 分析了 PCI 和 USB 的总线驱动过程中得到的,这两个总线类型能代表当前系统中的大多数设备类型,它们都有完善的热挺拔机制和电源管理的支持,也都有级连机制的支持,以桥接的 PCI/USB 总线控制器的方式可以支持更多的 PCI/USB 设备。[2] 总体来说,Linux统一设备模型具有以下的特点, * 代码重复最小化

* 提供诸如引用计数这样的统一机制

* 可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线

* 可以将系统中的全部设备结构以树的形式完整、有效的展现出来-包括所有的总线和内部连接

* 可以将设备和其对应的驱动联系起来,反之亦然

*可以将设备按照类型加以归类,比如分类为输入设备,而无需理解物理设备的拓扑结构 *可以讲设备树的叶子向其根的方向依次遍历,以保证能以正确顺序关闭各设备的电源。 最后一点是实现设备模型的最初动机。若想在内核中实现智能的电源管理,就需要来建立表示系统中设备拓扑关系的树结构[2]。如在一个典型的 PC 系统中,中央处理器(CPU)能直接控制的是 PCI 总线设备,而 USB 总线设备是以一个 PCI 设备(PCI-USB桥)的形式接入在 PCI 总线设备上,外部 USB 设备再接入在 USB 总线设备上;当计算机执行挂起(suspend)操作时, Linux 内核应该以 “外部USB设备->USB总线设备->PCI总线设备” 的顺序通知每一个设备将电源挂起;执行恢复(resume)时则以相反的顺序通知;反之如果不按此顺序则将有设备得不到正确的电源状态变迁的通知,将无法正常工作[1]。 内核对象机制关键数据结构

kobject内核对象

Kobject是Linux 2.6引入的新的设备管理机制,在内核中由struct kobject表示。通过这个数据结构使所有设备在底层都具有统一的接口,kobject提供基本的对象管理,是构成Linux 2.6设备模型的核心结构,它与sysfs文件系统紧密关联,每个在内核中注册的kobject对象都对应于sysfs文件系统中的一个目录。

Kobject结构定义为:

struct kobject {

char * k_name; 指向设备名称的指针

char name[KOBJ_NAME_LEN]; 设备名称

struct kref kref; 对象引用计数

struct list_head entry; 挂接到所在kset中去的单元

struct kobject * parent; 指向父对象的指针

struct kset * kset; 所属kset的指针

struct kobj_type * ktype; 指向其对象类型描述符的指针

struct dentry * dentry; sysfs文件系统中与该对象对应的文件节点路径指针 };

其中的kref域表示该对象引用的计数,内核通过kref实现对象引用计数管理,内核提供两个函数kobject_get()、kobject_put()分别用于增加和减少引用计数,当引用计数为0时,所有

linux 统一设备模型 pci,Linux设备驱动模型摘抄相关推荐

  1. 电脑设备中PCI简易通讯控制器驱动显示黄色感叹号图标怎么办【申明:来源于网络】

    电脑设备中PCI简易通讯控制器驱动显示黄色感叹号图标怎么办[申明:来源于网络] 电脑设备中PCI简易通讯控制器驱动显示黄色感叹号图标: http://wenda.so.com/q/1467255688 ...

  2. yang模型中rpc_领域驱动模型(DDD)设计讲解

    一. 什么是领域驱动模型(DDD)? 领域驱动模型一种设计思想,我们又称为DDD设计思想.是一种为了解决传统设计思想带来的维护困难,沟通困难和交互困难而产生的一种新的思想.也解决了在部分公司中,一个项 ...

  3. linux 统一设备模型 pci,linux设备模型____宏观印象

    linux设备模型____宏观印象 最近一个机会需要研究一个marvell芯片的设备的驱动,涉及驱动和一些用户态相关部分,正好学习一下驱动和sysfs,本文先是原理,后面的文章是详细描述.本文依托的是 ...

  4. (六)Linux之设备驱动模型(续)

    前面我们学习了杂项设备驱动模型.早期经典字符设备驱动模型,这一小节来讲解Linux中的标准字符设备驱动. 目录 (一)为什么引入标准字符设备驱动模型 (二)相关接口 (三)注册流程 (四)程序示例 ( ...

  5. linux端口零内存拷贝,Linux设备驱动之I/O端口与I/O内存

    一.统一编址与独立编址 该部分来自于:http://blog.chinaunix.net/space.php?uid=21347954&do=blog&id=443670,感谢maso ...

  6. Linux驱动模型核心,第一部分

    翻译自https://www.linuxjournal.com/article/6717 by Greg Kroah-Hartman on June 1, 2003 在Linux2.5内核的开发序列中 ...

  7. linux 网卡virtio,浅谈linux设备中virtio组织关系

    当我们查看Linux kernel.C的Virtio代码时,我们会发现许多相关的文件.那么,verdio,我们只有Virtio\UC',Virtio\ubk.C. 美德\ubalon.C. 等等.与这 ...

  8. linux查找设备所在分片,Linux设备驱动统一模型解析

    soc节点指定了<0x0 0xe0000000 0x00100000>:此属性值指定对于1024KB范围的地址空间,在物理0x0处寻址的子节点映射到物理0xe0000000的父地址.通过这 ...

  9. linux设备模型 字符设备,Linux 字符设备驱动模型之框架解说

    一.软件操作硬件设备模型 在进行嵌入式开发的过程中,在常做的事情就是驱动配置硬件设 备,然后根据功能需求使用硬件设备,实现功能的逻辑.如下图为其 相互之间的关系. 如上图所示: 驱动程序:主要作为操作 ...

最新文章

  1. JS判断提交表单不能为空 等的验证
  2. python coverage 使用技巧
  3. linux 删除20日前数据,Linux 维护常用命令
  4. pp模块生产策略组-对于零部件计划策略
  5. ---WebCam网络摄像头9 usb dirver
  6. Django Form -- 字段的用法扩展
  7. STL浅析——序列式容器vector的数据结构
  8. plSql安装以及连接远程oracle相关配置
  9. Spring事务总结(一) 内部调用事务失效、异常回滚
  10. [JOYOI] 自然数拆分Lunatic版
  11. c语言网络病毒代码大全,C语言病毒 - 各类源码 - 中国红客联盟 - Powered by HUC
  12. VS2013/SQL SERVER 产品密钥
  13. 软考 系统架构设计师 2009-2018年英语翻译及重点词汇
  14. 保姆级的接口自动化教程,不会写代码也能2小时学会
  15. MSP430F5438A+TM1650四位数码管显示+16位AD转换器ADS1110
  16. 思维模型篇:行业商业分析案例详解
  17. 用Java写的连连看小游戏——步骤分析
  18. 惠普服务器硬盘指示灯不亮或显示蓝色
  19. 羊年祝福语(羊年祝福大全)
  20. EDA12--DC脚本命令(一)

热门文章

  1. 用x64汇编优化8位S盒置换(三)
  2. Monkey测试2——Monkey测试策略
  3. Android Navigation Drawer(导航抽屉)
  4. check_traffic.sh监控格式为Hex-STRING的解决办法
  5. 几款最新的解谜单机小游戏
  6. 基于SSM的餐饮工业化管理系统-计算机毕业设计
  7. 哈希表建立及冲突处理
  8. CSS魔法堂:重拾Border之——更广阔的遐想
  9. varnish详解3
  10. Android中图片的目录