书籍详情

LINUX设备驱动程序:英文版

LINUX设备驱动程序:英文版

作者:Jonatban Corbet等著

出版社:东南大学出版社

出版时间:2005-06-01

ISBN:9787564100445

定价:¥89.00

购买这本书可以去
内容简介
  内容简介目录这本经典书籍目前已更至第三版,对于那些希望在Linux操作系统下支持计算机外围设备、运行新硬件,或者仅仅对Linux内核普通编程感兴趣的人来说,它是本必读书籍。《Linux设备驱动程序》提示了对如何给大多数的设备编写驱动程序的信息,这些信息迄今通过口头或者陷晦的源代码注释波共享。 本书的作者是Linux社区的领导者。Jonathan Corbet是个不定期的内核开源项目参与者同时还是评价甚高的LWN.net新闻和信息站点的执行编辑。Alessandro Rubini是Linux代码的一个开源提供者同时也是活跃的意大利Linux社区的中心人物。Greg Kroah-Hartman目前是本书描述的USB、PCI和驱动核心子系统相关的内核代码维护者。 本书新版根据Linux内核2.6.10彻底更新。内核的这个版本更加合理化并简化了普通工作任务的几个方法,比如即插即用、通过sysfs文件系统和用户空间交互、标准总线上的多设备管理。 你不必是一个内核高手就可以理解并享受本书,所需要的只是C以及Unix系统调用方面的背景知识。在不需要特殊的硬件设备就能编译和运行的详细示例的指引下,你将学会如何人字符设备、块设备和网络接口编写驱动程序。PCI、USB和tty(终端)子系统都单列一章。本书为那些对操作系统的工作机制好奇的人提供了地址空间、异步事件和I/O等方面的阐述。本书的主题包括: 字符设备、块设备、tty(终端)和网络驱动程序 驱动程序调试 中断 定时问题 同步、锁和对称多处香(SMP) 内存管理和DMA 驱动模型和sysfs 热插拔设备 通用总线,包括SCSI、PCI、USB和IEEE 1394(FireWire)的特殊要求Preface1. An Introduction to Device DriversThe Role of the Device DriverSplitting the KernelClasses of Devices and ModulesSecurity IssuesVersion NumberingLicense TermsJoining the Kernel Development CommunityOverview of the Book2. Building and Running ModulesSetting Up Your Test SystemThe Hello World ModuleKernel Modules Versus ApplicationsCompiling and LoadingThe Kernel Symbol TablePreliminariesInitialization and ShutdownModule ParametersDoing It in User SpaceQuick Reference3. Char DriversThe Design of scullMajor and Minor NumbersSome Important Data StructuresChar Device Registrationopen and releasescull‘s Memory Usageread and writePlaying with the New DevicesQuick Reference4. Debugging TechniquesDebugging Support in the KernelDebugging by PrintingDebugging by QueryingDebugging by WatchingDebugging System FaultsDebuggers and Related Tools5. Concurrency and Race Conditions Pitfalls in scullConcurrency and Its ManagementSemaphores and MutexesCompletionsSpinlocksLocking TrapsAlternatives to LockingQuick Reference6. Advanced Char Driver Operations ioctlBlocking I/Opoll and selectAsynchronous NotificationSeeking a DeviceAccess Control on a Device FileQuick Reference7. Time, Delays, and Deferred Work Measuring Time LapsesKnowing the Current TimeDelaying ExecutionKernel TimersTasldetsWorkqueuesQuick Reference8. Allocating MemoryThe Real Story of kmallocLookaside Cachesget_free_page and Friendsvmalloc and FriendsPer-CPU VariablesObtaining Large BuffersQuick Reference9. Communicating with HardwareI/O Ports and I/O MemoryUsing I/O PortsAn I/O Port ExampleUsing I/O MemoryQuick Reference10. Interrupt HandlingPreparing the Parallel PortInstalling an Interrupt HandlerImplementing a HandlerTop and Bottom HalvesInterrupt SharingInterrupt-Driven I/OQuick Reference11. Data Types in the KernelUse of Standard C TypesAssigning an Explicit Size to Data ItemsInterface-Specific TypesOther Portability IssuesLinked ListsQuick Reference12. PD DriversThe PCI InterfaceA Look Back: ISAPC/104 and PC/104+Other PC BusesSBUSNuBLISExternaI BusesQuick Reference13. USB DriversUSB Device BasicsUSB and SysfsUSBUfbsWriti‘ngaUSBDriverUSB Transfers WithOUt UrbsQuick Reference14.The Linux Device MOdeIKobjects,Ksets,and subsystemsLOW—Level Sy5fs operatiorlSHotplug EveFlt GenerationBuses,Devices,aD-d DriversClassesPutting It A11 TogetherHotplugDealing with FirmwareQuick Refefence15.MemOry Mapping and DMAMemory,Management in LinuxThe mmap Device operationPerforming Direct I/ODirect Memory AccessQuick Reference16.8IOck DriversRegistratiOFtThe Block Device OperationsRequest ProcessingSOITle other DetailsQuick Reference17. Network DriversHow snull Is DesignedConnecting to the KernelThe net_device Structure in DetailOpening and ClosingPacket TransmissionPacket ReceptionThe Interrupt HandlerReceive Interrupt MitigationChanges in Link StateThe Socket BuffersMAC Address ResolutionCustom ioctl CommandsStatistical InformationMulticastA Few Other DetailsQuick Reference18. TTY DriversA Small TTY Drivertty_driver Function PointersTTY Line Settingsioctlsproc and sysfs Handling of TTY DevicesThe tty_driver Structure in DetailThe tty_operations Structure in DetailThe tty_struct Structure in DetailQuick ReferenceBibliographyIndex
作者简介
暂缺《LINUX设备驱动程序:英文版》作者简介
目录
le width="100%"><tr><td> Preface                  </td></tr></table><table width="100%"><tr><td> 1. An Introduction to Device Drivers                  </td></tr></table><table width="100%"><tr><td> The Role of the Device Driver                  </td></tr></table><table width="100%"><tr><td> Splitting the Kernel                  </td></tr></table><table width="100%"><tr><td> Classes of Devices and Modules                  </td></tr></table><table width="100%"><tr><td> Security Issues                  </td></tr></table><table width="100%"><tr><td> Version Numbering                  </td></tr></table><table width="100%"><tr><td> License Terms                  </td></tr></table><table width="100%"><tr><td> Joining the Kernel Development Community                  </td></tr></table><table width="100%"><tr><td> Overview of the Book                  </td></tr></table><table width="100%"><tr><td> 2. Building and Running Modules                  </td></tr></table><table width="100%"><tr><td> Setting Up Your Test System                  </td></tr></table><table width="100%"><tr><td> The Hello World Module                  </td></tr></table><table width="100%"><tr><td> Kernel Modules Versus Applications                  </td></tr></table><table width="100%"><tr><td> Compiling and Loading                  </td></tr></table><table width="100%"><tr><td> The Kernel Symbol Table                  </td></tr></table><table width="100%"><tr><td> Preliminaries                  </td></tr></table><table width="100%"><tr><td> Initialization and Shutdown                  </td></tr></table><table width="100%"><tr><td> Module Parameters                  </td></tr></table><table width="100%"><tr><td> Doing It in User Space                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 3. Char Driven                  </td></tr></table><table width="100%"><tr><td> The Design of scull                  </td></tr></table><table width="100%"><tr><td> Major and Minor Numbers                  </td></tr></table><table width="100%"><tr><td> Some Important Data Structures                  </td></tr></table><table width="100%"><tr><td> Char Device Registration                  </td></tr></table><table width="100%"><tr><td> open and release                  </td></tr></table><table width="100%"><tr><td> scull's Memory Usage                  </td></tr></table><table width="100%"><tr><td> read and write                  </td></tr></table><table width="100%"><tr><td> Playing with the New Devices                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 4. Debugging Techniques                  </td></tr></table><table width="100%"><tr><td> Debugging Support in the Kernel                  </td></tr></table><table width="100%"><tr><td> Debugging by Printing                  </td></tr></table><table width="100%"><tr><td> Debugging by Querying                  </td></tr></table><table width="100%"><tr><td> Debugging by Watching                  </td></tr></table><table width="100%"><tr><td> Debugging System Faults                  </td></tr></table><table width="100%"><tr><td> Debuggers and Related Tools                  </td></tr></table><table width="100%"><tr><td> 5. Concurrency and Race Conditions                  </td></tr></table><table width="100%"><tr><td> Pitfalls in scull                  </td></tr></table><table width="100%"><tr><td> Concurrency and Its Management                  </td></tr></table><table width="100%"><tr><td> Semaphores and Mutexes                  </td></tr></table><table width="100%"><tr><td> Completions                  </td></tr></table><table width="100%"><tr><td> Spinlocks                  </td></tr></table><table width="100%"><tr><td> Locking Traps                  </td></tr></table><table width="100%"><tr><td> Alternatives to Locking                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 6. Advanced Char Driver Operations                  </td></tr></table><table width="100%"><tr><td> ioctl                  </td></tr></table><table width="100%"><tr><td> Blocking I/O                  </td></tr></table><table width="100%"><tr><td> poll and select                  </td></tr></table><table width="100%"><tr><td> Asynchronous Notification                  </td></tr></table><table width="100%"><tr><td> Seeking a Device                  </td></tr></table><table width="100%"><tr><td> Access Control on a Device File                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 7. Time, Delays, and Deferred Work                  </td></tr></table><table width="100%"><tr><td> Measuring Time Lapses                  </td></tr></table><table width="100%"><tr><td> Knowing the Current Time                  </td></tr></table><table width="100%"><tr><td> Delaying Execution                  </td></tr></table><table width="100%"><tr><td> Kernel Timers                  </td></tr></table><table width="100%"><tr><td> Tasklets                  </td></tr></table><table width="100%"><tr><td> Workqueues                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 8. Allocating Memory                  </td></tr></table><table width="100%"><tr><td> The Real Story of kmalloc                  </td></tr></table><table width="100%"><tr><td> Lookaside Caches                  </td></tr></table><table width="100%"><tr><td> get_free_page and Friends                  </td></tr></table><table width="100%"><tr><td> vmalloc and Friends                  </td></tr></table><table width="100%"><tr><td> Per-CPU Variables                  </td></tr></table><table width="100%"><tr><td> Obtaining Large Buffers                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 9. Communicating with Hardware                  </td></tr></table><table width="100%"><tr><td> I/O Ports and I/O Memory                  </td></tr></table><table width="100%"><tr><td> Using I/O Ports                  </td></tr></table><table width="100%"><tr><td> An I/O Port Example                  </td></tr></table><table width="100%"><tr><td> Using I/O Memory                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 10. Interrupt Handling                  </td></tr></table><table width="100%"><tr><td> Preparing the Parallel Port                  </td></tr></table><table width="100%"><tr><td> Installing an Interrupt Handler                  </td></tr></table><table width="100%"><tr><td> Implementing a Handler                  </td></tr></table><table width="100%"><tr><td> Top and Bottom HaNes                  </td></tr></table><table width="100%"><tr><td> Interrupt Sharing                  </td></tr></table><table width="100%"><tr><td> Interrupt-Driven I/O                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 11. Data Types in the Kernel                  </td></tr></table><table width="100%"><tr><td> Use of Standard C Types                  </td></tr></table><table width="100%"><tr><td> Assigning an Explicit Size to Data Items                  </td></tr></table><table width="100%"><tr><td> Interface-Specific Types                  </td></tr></table><table width="100%"><tr><td> Other Portability Issues                  </td></tr></table><table width="100%"><tr><td> Linked Lists                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 12. PCI Drivers                  </td></tr></table><table width="100%"><tr><td> The PCI Interface                  </td></tr></table><table width="100%"><tr><td> A Look Back: ISA                  </td></tr></table><table width="100%"><tr><td> PC/104 and PC/104+                  </td></tr></table><table width="100%"><tr><td> Other PC Buses                  </td></tr></table><table width="100%"><tr><td> SBus                  </td></tr></table><table width="100%"><tr><td> NuBus                  </td></tr></table><table width="100%"><tr><td> External Buses                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 13. USB Drivers                  </td></tr></table><table width="100%"><tr><td> USB Device Basics                  </td></tr></table><table width="100%"><tr><td> USB and Sysfs                  </td></tr></table><table width="100%"><tr><td> USB Urbs                  </td></tr></table><table width="100%"><tr><td> Writing a USB Driver                  </td></tr></table><table width="100%"><tr><td> USB Transfers Without Urbs                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 14. The Linux Device Model                  </td></tr></table><table width="100%"><tr><td> Kobjects, Ksets, and Subsystems                  </td></tr></table><table width="100%"><tr><td> Low-Level Sysfs Operations                  </td></tr></table><table width="100%"><tr><td> Hotplug Event Generation                  </td></tr></table><table width="100%"><tr><td> Buses, Devices, and Drivers                  </td></tr></table><table width="100%"><tr><td> Classes                  </td></tr></table><table width="100%"><tr><td> Putting It All Together                  </td></tr></table><table width="100%"><tr><td> Hotplug                  </td></tr></table><table width="100%"><tr><td> Dealing with Firmware                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 15. Memory Mapping and DMA                  </td></tr></table><table width="100%"><tr><td> Memory Management in Linux                  </td></tr></table><table width="100%"><tr><td> The mmap Device Operation                  </td></tr></table><table width="100%"><tr><td> Performing Direct I/0                  </td></tr></table><table width="100%"><tr><td> Direct Memory Access                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 16. Block Drivers                  </td></tr></table><table width="100%"><tr><td> Registration                  </td></tr></table><table width="100%"><tr><td> The Block Device Operations                  </td></tr></table><table width="100%"><tr><td> Request Processing                  </td></tr></table><table width="100%"><tr><td> Some Other Details                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 17. Network Drivers                  </td></tr></table><table width="100%"><tr><td> How snull Is Designed                  </td></tr></table><table width="100%"><tr><td> Connecting to the Kernel                  </td></tr></table><table width="100%"><tr><td> The net_device Structure in Detail                  </td></tr></table><table width="100%"><tr><td> Opening and Closing                  </td></tr></table><table width="100%"><tr><td> Packet Transmission                  </td></tr></table><table width="100%"><tr><td> Packet Reception                  </td></tr></table><table width="100%"><tr><td> The Interrupt Handler                  </td></tr></table><table width="100%"><tr><td> Receive Interrupt Mitigation                  </td></tr></table><table width="100%"><tr><td> Changes in Link State                  </td></tr></table><table width="100%"><tr><td> The Socket Buffers                  </td></tr></table><table width="100%"><tr><td> MAC Address Resolution                  </td></tr></table><table width="100%"><tr><td> Custom ioctl Commands                  </td></tr></table><table width="100%"><tr><td> Statistical Information                  </td></tr></table><table width="100%"><tr><td> Multicast                  </td></tr></table><table width="100%"><tr><td> A Few Other Details                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> 18. TTY Drivers                  </td></tr></table><table width="100%"><tr><td> A Small TTY Driver                  </td></tr></table><table width="100%"><tr><td> tty_driver Function Pointers                  </td></tr></table><table width="100%"><tr><td> TTY Line Settings                  </td></tr></table><table width="100%"><tr><td> ioctls                  </td></tr></table><table width="100%"><tr><td> proc and sysfs Handling of TTY Devices                  </td></tr></table><table width="100%"><tr><td> The try_driver Structure in Detail                  </td></tr></table><table width="100%"><tr><td> The tty_operations Structure in Detail                  </td></tr></table><table width="100%"><tr><td> The tty_struct Structure in Detail                  </td></tr></table><table width="100%"><tr><td> Quick Reference                  </td></tr></table><table width="100%"><tr><td> Bibliography                  </td></tr></table><table width="100%"><tr><td> Index                  </td></tr></table></font>
<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr bgcolor="#CC0000">      <td height="1"></td>  </tr>  <tr>      <td height="5"></td>  </tr>  <tr>    <td>     ·<a href='javascript:moreup("Catalog.asp?IDD=25526&type=1")'>目录</a>·<a href='javascript:moreup("Catalog.asp?IDD=25526&type=2")'>内容简介</a>·<a href='javascript:moreup("Catalog.asp?IDD=25526&type=5")'>作译者</a>·<a href='javascript:moreup("Catalog.asp?IDD=25526&type=6")'>前言</a>    </td>  </tr></table></BODY></H
猜您喜欢

读书导航