Linux设备驱动程序
Linux设备驱动程序
Alessandro Ruibini 著
LISOLEG 译
出版时间:2000年04月
页数:475
本书是针对那些想在Linux操作系统下支持计算机外设或者是想在Linux下开发并运行新硬件的人而写的。Linux是UNIX市场中份额增长最快的操作系统,在许多应用领域中赢得了众多热心的追随者。本书展示了迄今为止流传于口头上的或隐含在源代码评注背后的信息,并引导您为众多的设备编写驱动程序。

您不必成为一个内核的"黑客"才可以理解并欣赏这本书。您所需要具备的只是对C语言和一些UNIX系统调用的背景知识的了解。本书循序渐进地描述了字符设备、块设备和网络接口的驱动程序,并附之以功能完善的示例以及有关驱动程序设计的事项,而且这些示例不用在特定的硬件上就能运行。对于那些想知道操作系统是怎样进行工作的人来讲,本书也为他们提供了有关寻址空间、异步事件及I/O方面的知识。

贯穿全书的一个重点是可移植性。它涉及了从1.2.13到2.0的内核版本,以及2.0以后至2.1.43之间的开发版本。本书也告诉你怎样在硬件平台上最大限度地移植代码。

本书涵盖的内容包括:

   建立驱动程序并装载模块
   完善字符设备、块设备和网络设备驱动程序
   调试驱动程序
   计时
   内存管理和DMA
   中断
   可移植性事项
   外部设备互连(PCI)
   内核内幕的导览
  1. 第一部分 基 础
  2. 第一章 什么是C?
  3. 编程原理
  4. C语言简史
  5. C如何工作
  6. 如何学习C
  7. 第二章 编程基础
  8. 程序从概念到运行
  9. 编写一个真正的程序
  10. 使用命令行编译器编程
  11. 使用集成开发环境(IDE)编程
  12. 获取UNIX帮助
  13. 获取集成开发环境帮助
  14. 集成开发环境菜单
  15. 编程练习
  16. 第三章 风格
  17. 基础编码练习
  18. 编码盲从
  19. 缩进与编码格式
  20. 清晰
  21. 简明
  22. 小结
  23. 第四章 基本定义与表达式
  24. 程序要素
  25. 程序的基本结构
  26. 简单表达式
  27. 变量和存储
  28. 变量定义
  29. 整型
  30. 赋值语句
  31. printf函数
  32. 浮点型
  33. 浮点数与整数的除法运算
  34. 字符
  35. 答案
  36. 编程练习
  37. 第五章 数组、修饰符与读取数字
  38. 数组
  39. 读取串
  40. 多维数组
  41. 读取数字
  42. 变量初始化
  43. 整型
  44. 浮点型
  45. 常量说明
  46. 十六进制与八进制常量
  47. 快捷运算符
  48. 副作用
  49. ++x或x++
  50. 更多的副作用问题
  51. 答案
  52. 编程练习
  53. 第六章 条件和控制语句
  54. if语句
  55. else语句
  56. 怎样避免误用strcmp函数
  57. 循环语句
  58. while 语句
  59. break语句
  60. continue语句
  61. 随处赋值的副作用
  62. 答案
  63. 编程练习
  64. 第七章 程序设计过程
  65. 设置
  66. 程序规范
  67. 代码设计
  68. 原型
  69. Makefile
  70. 测试
  71. 调试
  72. 维护
  73. 修改
  74. 代码分析
  75. 注释程序
  76. 使用调试器
  77. 用文本编辑器浏览
  78. 增加注释
  79. 编程练习
  80. 第二部分 简单程序设计
  81. 第八章 更多的控制语句
  82. for语句
  83. switch语句
  84. switch, break和continue
  85. 答案
  86. 编程练习
  87. 第九章 变量作用域和函数
  88. 作用域和类
  89. 函数
  90. 无参数的函数
  91. 结构化程序设计
  92. 递归
  93. 答案
  94. 编程练习
  95. 第十章 C预处理器
  96. #define语句
  97. 条件编译
  98. 包含文件
  99. 带参数的宏
  100. 高级特征
  101. 小结
  102. 答案
  103. 编程练习
  104. 第十一章 位运算
  105. 位运算符
  106. 与运算符(&)
  107. 按位或(\)
  108. 按位异或(^)
  109. 非运算符(~)
  110. 左移与右移运算符(<<, >>)
  111. 设置、清除和检测位
  112. 位图图形
  113. 答案
  114. 编程练习
  115. 第十二章 高级类型
  116. 结构
  117. 联合
  118. typedef
  119. 枚举类型
  120. 强制类型转换
  121. 位字段或紧缩结构
  122. 结构数组
  123. 小结
  124. 编程练习
  125. 第十三章 简单指针
  126. 函数自变量指针
  127. 常量指针
  128. 指针和数组
  129. 如何不使用指针
  130. 用指针分隔字符串
  131. 指针和结构
  132. 命令行参数
  133. 编程练习
  134. 答案
  135. 第十四章 文件输入/输出
  136. 转换程序
  137. 二进制和ASCII码文件
  138. 行尾难题
  139. 二进制I/O
  140. 缓冲问题
  141. 非缓冲I/O
  142. 设计文件格式
  143. 答案
  144. 编程练习
  145. 第十五章 调试和优化
  146. 调试
  147. 交互调试器
  148. 调试一个二分查找程序
  149. 实时运行错误
  150. 公开声明调试方法
  151. 优化
  152. 答案
  153. 编程练习
  154. 第十六章 浮点数
  155. 浮点数格式
  156. 浮点数加法/减法
  157. 乘法
  158. 除法
  159. 上溢和下溢
  160. 舍入误差
  161. 精度
  162. 舍入误差最小化
  163. 判定精度
  164. 精度和速度
  165. 幂级数
  166. 编程练习
  167. 第三部分 高级编程观念
  168. 第十七章 高级指针
  169. 指针和结构
  170. free函数
  171. 链表
  172. 结构指针运算符
  173. 顺序链表
  174. 双向链表
  175. 树的打印
  176. 程序的剩余部分
  177. 象棋程序中用到的数据结构
  178. 答案
  179. 编程练习
  180. 第十八章 模块化编程
  181. 模块
  182. 公用和专用
  183. extern 修饰符
  184. 头文件
  185. 模块体
  186. 使用无限数组的程序
  187. 用于多文件的Makefile
  188. 使用无限数组
  189. 把一项任务分成模块
  190. 模块划分实例:文本编辑器
  191. 编译器
  192. 电子表格
  193. 模块设计准则
  194. 编程练习
  195. 第十九章 旧式编译器
  196. K&R风格的函数
  197. 库的发展
  198. 遗漏的特性
  199. Free/Malloc的发展
  200. lint
  201. 答案
  202. 第二十章 移植问题
  203. 模块化
  204. 字大小
  205. 字节顺序问题
  206. 对齐问题
  207. NULL指针问题
  208. 文件名问题
  209. 文件类型
  210. 小结
  211. 答案
  212. 第二十一章 C内的"角落"
  213. do/while
  214. goto
  215. ?:指令
  216. , 运算符
  217. 不稳定限定词
  218. 答案
  219. 第二十二章 组合到一起
  220. 需求
  221. 规范说明
  222. 代码设计
  223. 编码
  224. 功能描述
  225. 扩展
  226. 测试
  227. 修改
  228. 最后的警告
  229. 程序文件
  230. 编程练习
  231. 第二十三章 程序设计格言
  232. 概述
  233. 设计
  234. 定义
  235. switch语句
  236. 预处理器
  237. 风格
  238. 编译
  239. 最后的注解
  240. 答案
  241. 第四部分 其他语言特性
  242. 附录一 ASCII表
  243. 附录二 范围和参数传递转换
  244. 附录三 运算符优先规则
  245. 附录四 使用幂级数计算正弦函数的程序
  246. 词汇表
书名:Linux设备驱动程序
作者:Alessandro Ruibini 著
译者:LISOLEG 译
国内出版社:中国电力出版社
出版时间:2000年04月
页数:475
书号:7-5083-0221-4
原版书出版商:O'Reilly Media
Alessandro Ruibini