前言
本设备驱动教程是一本实际操作指南,介绍如何开发简单的 SolarisTM
操作系统(Solaris OS)驱动程序。设备驱动教程 还阐述了设备驱动程序在 Solaris
操作系统中的工作原理。本书与 Writing
Device Drivers 配套。Writing Device Drivers
是一个详尽的参考文档,对多种设备和驱动程序进行了讨论。设备驱动教程 探讨了完整的驱动程序,但没有对所有驱动程序类型进行全面分析。设备驱动教程
中的很多地方都引用了 Writing Device Drivers 及其他书籍的内容,以提供更详细的信息。
注 - 该 Solaris 版本支持使用 SPARC® 和 x86 系列处理器架构的系统:UltraSPARC®
SPARC64、AMD64、Pentium 和 Xeon EM64T。欲了解得到支持的系统,请参阅 Solaris
10 硬件兼容性列表,网址为 http://www.sun.com/bigadmin/hcl。本文介绍了平台类型之间的实施差别。
在本文中,术语“x86”是指使用与 AMD64 或 Intel Xeon/Pentium 产品家族兼容的处理器制造的
64 位和 32 位系统。欲了解得到支持的系统,请参阅 Solaris 10 硬件兼容性列表。
谁应该阅读本书
需要开发、安装和配置 Solaris 操作系统设备驱动程序者,以及需要维护现有驱动程序或为现有的 Solaris 操作系统驱动程序添加新功能者,都应阅读本书。本书提供的内核方面的信息也有助于诊断和排除在安装或配置
Solaris 系统时遇到的问题。
用户背景知识
要编写 Solaris 操作系统设备驱动程序,应具备以下背景:
编写设备驱动程序需要具有的最重要信息是设备的特征。请查看设备的详细说明。
具有 Solaris 操作系统编译器、调试器和其他工具方面的经验会大有帮助。还需要了解文件系统在哪些情况下适用于内核和应用层。这些主题在本教程中都有所论述。
本书组织结构
本书分为以下几章:
第 1 章,设备驱动程序简介 对 Solaris 操作系统和内核进行了概述。本章还讨论了驱动程序的开发环境和工具。
第 2 章,模板驱动程序例子 介绍了一个简单的模板驱动程序。本章详细阐述了该程序的开发、构建、安装、加载和测试步骤。
第 3 章,读写内核内存中的数据 描述了如何开发可以读写内核内存中数据的驱动程序。
第 4 章,编写设备驱动程序的技巧 讨论了驱动程序开发中的一些常见错误,以及避免或处理这些错误的方法。本章还介绍了驱动程序的分析和调试工具。
相关图书
欲了解设备驱动程序接口的详细参考信息,请参阅第 9 节手册页。第 9E 节 Intro(9E)介绍了
DDI/DKI(设备驱动程序接口/驱动程序内核接口) 驱动程序入口点。第 9F 节 Intro(9F)介绍了
DDI/DKI 内核函数。第 9S 节 Intro(9S)介绍了
DDI/DKI 属性和数据结构。
欲了解与驱动程序相关的其他工具和问题信息,请参阅 Sun Microsystems 提供的以下书籍:
访问 Sun 在线文档
通过 docs.sun.comSM 网站可以访问 Sun 在线技术文档,浏览 docs.sun.com
文库或者搜索某一书名或主题。其网址为 http://docs.sun.com。
订阅 Sun 文档
Sun Microsystems 还以印刷形式提供某些重要的产品文档。欲了解文档清单及其订购方法,请参阅“Buy printed
documentation”,网址为 http://docs.sun.com。
排版约定
下表说明了本书中使用的排版变化。
表 P - 1 排版约定
| 字体或符号 |
意义 |
例 |
| AaBbCc123 |
命令、文件和目录名称以及屏幕上的计算机输出 |
编辑 .login
文件。
使用 ls -a 列出所有文件。
machine_name% you have mail。 |
| AaBbCc123
|
键入的内容,区分于屏幕上的计算机输出 |
machine_name%
su
Password: |
| AaBbCc123 |
命令行占位符:使用实际的名称或值代替 |
若要删除文件,则键入 rm 文件名。 |
| AaBbCc123 |
书名、新词和要强调的词 |
请阅读 用户指南 中的第
6 章。
请执行补丁分析。
请勿保存文件。
[请注意,在线时有些强调项以粗体显示。] |
命令示例中的 shell 提示符
下表给出了 C shell、Bourne shell 和 Korn shell 中的默认系统提示符和超级用户提示符。
表 P - 2 Shell 提示符
| Shell |
提示符 |
| C shell 提示符 |
machine_name% |
| C shell 超级用户提示符 |
machine_name# |
| Bourne shell 和 Korn shell
提示符 |
$ |
| Bourne shell 和 Korn shell
超级用户提示符 |
# |
|