词条 | OpenSolaris设备驱动原理与开发 |
释义 | 图书信息书名:OpenSolaris设备驱动原理与开发 作者:Sun中国工程研究院研发工程师 定价:23.00 页数:269 出版日期:2010年03月17日 图书分类:计算机 > 操作系统 > 综合 语种:简体中文 开本:16 责任编辑:李东震 包含CD:1CD 内容简介全书共分10章,内容包括:概述、Solaris的设备管理、Solaris设备驱动程序、Solaris内核多线程与同步、Solaris内核内存、PCI、Solaris中断、DMA、电源管理、FMA(Solaris故障管理)。 图书前言Solaris,作为UNIX操作系统的重要衍生版本之一,随着2005年其源代码的开放 (OpenSolaris),不仅用于传统的服务器/工作站上,也逐渐地应用在普通的PC或笔记本上。作为Sun公司(现在是Oracle)的重要软件产品,其具有良好的架构和许多创新的特性,因此越来越多的人和企业开始使用、学习和研究Solaris。 Sun Microsystems中国工程研究院(ERI)Solaris设备驱动研发部是在2003年成立的。自成立之初,就经常会有一些针对新员工的技术培训,使新的技术人员能够快速理解Solaris的特性、框架和各种设备驱动的开发技术等。虽然平时工作任务繁多,但大家仍坚持利用业余时间来从事本书的写作。本书写作过程中,工程师以严谨的工作作风和认真的求实态度,力求专业和准确。 在讲解过程中,本书注重对内部原理进行深入浅出的解释,同时对其设计结构与具体实现加以必要剖析,一些重要接口附以相关的示范用例,而且针对一些开发中的重要问题,会选取一些典型应用对其根源、解决思路等进行深入阐述。力求使读者对Solaris设备驱动的实现原理、整体架构和开发实践有全面的理解,做到不仅知其然,还要知其所以然。 非常感谢张强组织了本书的编写,冯翌坤、张强、刘澎、游湘涛、王秀燕负责了具体章节的写作。第1章由冯翌坤编写,简要描述了Solaris的运行环境、模块结构和调试工具。第2章由张强编写,具体地阐述了Solaris内核是如何组织和管理各种设备,包括设备文件系统、设备结点及相关配置工具等。第3章由冯翌坤编写,以一个伪设备的驱动程序为例,讲解了 Solaris设备驱动的大致结构、各个功能入口以及驱动开发中的重要知识点。第4章由刘澎编写,描述了Solaris内核的多线程模型和调度方案,以及开发中常用锁的原理和使用技巧。第5章由游湘涛编写,讲述了在设备驱动开发中用到的关于内核内存的接口、内部原理和使用技巧。第6章由刘澎编写,介绍了PCI总线、设备枚举和PCI的空间访问。第7章由王秀燕编写,重点描述了Solaris的中断机制,以及在x86和SPARC平台上的实现,同时还介绍了常用到的一些中断的DDI/DKI,并附有代码示例。第8章由刘澎编写,阐述了Solaris上DMA的模型和相关机制(绑定、同步以及内存分配),对于想了解系统和设备之间是如何进行DMA数据传输的读者是很有帮助的。第9章由冯翌坤编写,介绍了电源管理在系统和设备两个方面的设计与实现。第10章由游湘涛编写,介绍了Solaris上故障管理(FMA)。包括其原理、架构、实现,以及在设备驱动开发中如何支持FMA。本书的一些章节会涉及Solaris内核的一些知识,但重点仍是放在与设备驱动相关的方面。如需要更多地了解Solaris内核,可参阅《Solaris Internals》等书籍。 本书在写作过程中得到了很多ERI同事的帮助。Paul Lee、王睿、叶诚、杨勇、徐华卓和各位编者仔细地阅读了各个章节,并提出了宝贵的意见。同时感谢机械工业出版社华章公司的温莉芳女士、陈冀康和李东震编辑的支持。 虽然本书的写作小组付出了很多的努力,但随着技术的飞速发展,加之我们的水平有限,书中难免会有一些疏漏和不足,希望能得到广大读者的意见和建议。 Sun中国工程研究院院长 宋向军 2010年2月3日 图书目录前言 第1章 概述 1 1.1 Solaris 1 1.2 OpenSolaris 2 1.3 调试工具 14 第2章 Solaris的设备管理 25 2.1 设备的文件操作 25 2.2 设备文件系统(devfs) 25 2.2.1 dv_node 26 2.2.2 通过设备文件系统来配置设备驱动 27 2.3 设备信息结点(dev_info) 29 2.3.1 设备信息结点的属性 31 2.3.2 设备信息结点的生命周期 32 2.4 设备标识 34 2.4.1 devid 34 2.4.2 设备的物理路径 35 2.4.3 设备号(主设备结点,次设备结点) 36 2.5 设备树及其属性 37 2.5.1 Open Firmware简介 37 2.5.2 设备属性 38 2.5.3 总线属性 43 2.6 设备树的管理 43 2.6.1 devfsadm 43 2.6.2 Syseventd 46 2.6.3 驱动配置工具 47 2.7 动态重新配置 47 第3章 Solaris设备驱动程序 50 3.1 设备驱动程序模块 50 3.2 设备驱动程序中的设备管理 52 3.2.1 softstate 52 3.2.2 设备的功能提供 54 3.3 设备驱动程序中的操作 56 3.3.1 设备结点 56 3.3.2 设备的配置 58 3.3.3 设备操作 60 3.4 设备驱动程序中的硬件操作 61 3.4.1 attach() 61 3.4.2 timeout() 65 第4章 Solaris内核多线程与同步 66 4.1 多线程 66 4.1.1 多线程模型 66 4.1.2 线程调度 72 4.1.3 任务队列 77 4.1.4 cyclic子系统 81 4.1.5 callout和timeout 84 4.2 同步机制 87 4.2.1 锁的硬件原理 87 4.2.2 互斥锁 92 4.2.3 条件变量 96 4.2.4 锁的使用 97 第5章 Solaris内核内存 99 5.1 内核内存概述 99 5.1.1 Solaris内核内存虚拟地址空间布局 99 5.1.2 内核堆 103 5.1.3 内核内存分配和管理 103 5.2 slab分配程序 104 5.2.1 概述 104 5.2.2 slab分配程序接口 106 5.2.3 slab分配程序的分层实现 108 5.2.4 slab分配程序缓存统计信息 113 5.3 vmem分配器 115 5.3.1 vmem接口 115 5.3.2 vmem的实现 117 5.4 内核内存的跟踪和调试 119 5.4.1 检查已释放缓冲区:0xdeadbeef 120 5.4.2 使用Redzone进行调试:0xfeedface 120 5.4.3 检测未初始化数据:0xbaddcafe 122 5.4.4 内存分配日志 123 5.4.5 使用高级技巧分析内存 125 5.4.6 使用::kmem_verify找到被破坏的缓冲区 126 5.4.7 使用分配程序日志功能 127 第6章 PCI 130 6.1 PCI概述 130 6.1.1 I/O总线的发展 130 6.1.2 PCI简介 131 6.2 x86平台PCI设备配置过程 132 6.2.1 PCI资源管理 132 6.2.2 设备枚举 134 6.2.3 设备再编程 139 6.3 PCI空间访问 141 6.3.1 字节序 141 6.3.2 设备访问的数据一致性 146 6.3.3 设备访问机制 147 第7章 Solaris中断 152 7.1 Solaris上的中断简介 152 7.2 MSI和MSI-X 153 7.2.1 MSI 154 7.2.2 MSI-X 155 7.2.3 MSI和MSI-X的异同 157 7.2.4 MSI消息地址和消息数据 157 7.3 x86上的中断机制及Solaris中x86中断的实现 159 7.3.1 x86体系结构中的中断和异常处理机制 159 7.3.2 x86系统中的中断控制器 159 7.3.3 Solaris对x86系统中断的支持 162 7.4 SPARC系统上的中断机制及 Solaris中SPARC中断的实现 167 7.4.1 SPARC处理器在硬件实现上对中断 的支持 167 7.4.2 SPARC系统上的中断控制器 169 7.4.3 Solaris对SPARC系统中断的支持 170 7.5 Solaris上软中断的实现 175 7.5.1 x86系统中软中断的实现 175 7.5.2 SPARC系统中软中断的实现 178 7.6 Solaris中和中断相关的DDI/DKI 181 第8章 DMA 186 8.1 DMA概述 186 8.1.1 SG表和DMA控制器 186 8.1.2 DVMA和IOMMU 187 8.1.3 DMA的数据一致性 190 8.2 Solaris的DMA模型 194 8.2.1 DMA的属性 194 8.2.2 DMA模型概述 195 8.2.3 DMA对象 197 8.3 DMA绑定过程 199 8.4 DMA的同步 202 8.5 DMA内存分配机制 203 8.5.1 ddi_dma_mem_alloc()接口定义 203 8.5.2 x86平台DMA内存分配 203 第9章 电源管理 207 9.1 关于电源管理 207 9.2 电源管理的设计与实现 208 9.3 系统的电源管理 210 9.4 设备的电源管理 215 9.4.1 成员 215 9.4.2 属性 216 9.4.3 设备的电源管理过程 216 第10章 FMA(Solaris故障管理) 221 10.1 FMA原理和架构 221 10.1.1 Solaris FMA模型 221 10.1.2 故障边界 223 10.1.3 错误处理、故障诊断和响应 224 10.1.4 资源命名和事件协议 224 10.2 Solaris故障管理的实现 233 10.2.1 故障管理器fmd概述 233 10.2.2 系统拓扑 236 10.2.3 eversholt故障诊断语言 238 10.3 设备驱动程序中的FMA支持 238 10.3.1 FMA资源初始化 239 10.3.2 IO设备内部错误 241 10.3.3 IO访问和DMA错误 246 附录1 设备驱动(testdrv)的Makefile 252 附录2 dummy驱动程序 255 附录3 和中断相关的函数使用举例 258 参考文献 261 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。