|
|
基本信息
- 作者: (印)Sreekrishnan Venkateswaran [作译者介绍]
- 译者: 宋宝华;何昭然;史海滨;吴国成[同译者作品]
- 丛书名: 图灵程序设计丛书
- 出版社:人民邮电出版社
- ISBN:9787115221674
- 上架时间:2010-2-26
- 出版日期:2010 年3月
- 开本:16开
- 页码:1
- 版次:1-1
- 所属分类:
计算机 > 操作系统 > Linux
内容简介
本书适合中高级Linux 开发人员阅读。
作译者
本书提供作译者介绍
.. << 查看详细
目录
1.1 演进 1
1.2 GNU Copyleft 2
1.3 kernel.org 2
1.4 邮件列表和论坛 3
1.5 Linux发行版 3
1.6 查看源代码 4
1.7 编译内核 7
1.8 可加载的模块 8
1.9 整装待发 9
第2章 内核 11
2.1 启动过程 11
2.1.1 BIOS-provided physical RAM map 12
2.1.2 758MB LOWMEM available 14
2.1.3 Kernel command line: ro
root=/dev/hda1 14
2.1.4 Calibrating delay...1197.46BogoMIPS (lpj=2394935) 15
2.1.5 Checking HLT instruction 16
2.1.6 NET: Registered protocol family 2 17
2.1.7 Freeing initrd memory: 387k freed 17
前言
时光飞逝,当年的小企鹅已经成长为一名健壮的少年。过去我们编写了成千上万行代码并耗时一年完成的任务,若采用现在的内核,只需要几天就可以完成。但是,要成为一名能巧妙地解决多种问题的高级内核工程师,就必须理解今天的Linux内核提供的各种功能和设施。
关于本书
在Linux内核源代码树提供的各个子系统中,drivers/目录是其中最大的一个分支,它比其他子系统大数倍。随着各种新技术的广泛应用,内核中新的设备驱动程序的开发工作正在稳步加速。最新的Linux内核支持多达70余种设备驱动程序。
本书主要讲解如何编写Linux设备驱动程序,介绍了目前内核所支持的主要设备类型的设计与开发,其中包括当年我在将Linux移植到手表中时未遇到的设 备。本书在讲解每类设备驱动程序的时候,都会先介绍与该驱动程序相关的技术,接着给出一个实际的开发例子,最后列出相关的内核源代码文件。在介绍 Linux设备驱动程序之前,本书先介绍了内核以及Linux 2.6的重要特性,重点介绍了设备驱动程序编写者感兴趣的内核知识。
读者对象
本书面向渴望在Linux内核上开发新设备驱动程序的中级程序员。要阅读本书,读者需要具备与操作系统相关的基本概念。比如,要知道什么是系统调用,理解 为什么在内核开发中需要关注并发问题。本书假定读者已经下载了Linux,浏览过Linux内核源代码,并至少浏览过一些相关的文档。另外,读者必须能非 常熟练地使用C语言。
各章概述
前4章为阅读本书其他部分打下了基础,接下来的16章讨论了不同类型的Linux设备驱动程序,之后的第21章描述了设备驱动程序的调试技术,第22章讲 解了维护和交付设备驱动程序的相关事宜,最后一章给出了当接到一个新设备驱动程序开发任务的时候,要首先查验的项目清单。
第1章是引言,简单介绍了Linux系统,讲解了下载内核源代码、进行小的代码修改以及建立可启动的Linux内核映像。
第2章引导读者轻松地进入Linux内核的内部结构,讲解了一些必要的内核概念。首先讲述了内核的启动进程,接下来描述了与驱动程序开发相关的内核API,譬如内核定时器、并发管理以及内存分配等。
第3章讲解了对驱动程序开发有用的一系列内核API。首先介绍了内核线程(它提供了一种在内核空间运行后台任务的能力),接下来讲解了一系列的辅助 API(如链表、工作队列、完成函数、通知链等)。这些辅助API能简化代码,剔除内核中的冗余,有助于内核的长期维护。
第4章为掌握Linux设备驱动程序开发艺术打基础。这一章首先呈现一般的PC兼容系统和嵌入式设备的体系结构的鸟瞰图,介绍了设备和驱动程序,并讲解了中断处理和内核设备模型等基本的驱动程序概念。
第5章介绍了Linux字符设备驱动程序的体系架构,引入了几个新概念,譬如轮询、异步通知和I/O控制等。由于本书后面介绍的大多数设备都可以看作“超级”字符设备,所以这些概念也与后续章节密切相关。
第6章讲解了内核串行设备驱动程序的层次结构。
第7章讨论了内核中为键盘、鼠标和触摸屏控制器等输入设备服务的输入子系统。
第8章讲解了通过I2C总线或SMBus总线与系统连接的设备(如EEPROM)的驱动程序,同时也介绍了SPI总线和1-wire总线等其他串行接口。
第9章分析了PCMCIA子系统,讲授了如何编写含PCMCIA或CF组件的设备的驱动程序。
第10章描述了内核对PCI及其衍生总线设备的支持。
第11章探讨了USB的体系架构,并讲解了如何利用Linux内核USB子系统的API来开发USB设备驱动程序。
序言
答案是:相对于其他同类书,本书实现了一个巨大的突破。
首先,本书与时俱进,基于最新的2.6内核进行讲解。其次,也是更重要的,本书对驱动程序的讲解非常透彻。大多数设备驱动程序的图书仅仅讲解与标准 Unix内核或操作系统相关的主题,譬如串口、磁盘驱动和文件系统等,如果你运气好,可能也会碰到讲解网络协议栈的内容。
本书前进了一大步,它没有避重就轻,而是知难而上,探讨了在现代PC和嵌入式系统中必须面对的难点,比如PCMCIA、USB、I2C、视频、音频、闪存、无线通信等。你可以这样定位本书:Linux内核包含了什么,本书就会告诉你什么。
它毫无遗漏,应有尽有。
何况,作者早就取得了不凡的成就:仅仅是看到他在20世纪90年代末将Linux移植到了手表中的相关介绍就让人激动不已。
本书能成为Prentice Hall开源软件开发系列丛书中的一本,我感到非常激动和欣慰。开源领域从来不乏振奋人心的事件,但本书的面世无疑更加引人瞩目。我希望你能从本书中找到你在进行内核开发时需要的东西,并且也能享受这一过程。
Arnold Robbins
资深Linux技术专家,gawk维护者,Prentice Hall开源软件开发系列丛书编者
媒体评论
“这是我读过的最全面的Linux设备驱动程序著作。”——Theodore Ts’o,Linux基金会首席平台战略师,北美第一位内核开发者
“我要找的就是这样一本书,它告诉我的不只是实例,更重要的是设备驱动程序的设计思路。”
—— Anthony Lawrence,知名操作系统咨询师