Fishpond Gift Vouchers - Let them choose!

We won't be beaten by anyone. Guaranteed

Venkateswa
By

Rating

Product Description
Product Details

Table of Contents

Foreword xxiPreface xxiiiAcknowledgments xxixAbout the Author xxxChapter 1 Introduction 1Evolution 2The GNU Copyleft 3Kernelorg 4Mailing Lists and Forums 4Linux Distributions 5Looking at the Sources 6Building the Kernel 10Loadable Modules 12Before Starting 14Chapter 2 A Peek Inside the Kernel 17Booting Up 18Kernel Mode and User Mode 30Process Context and Interrupt Context 30Kernel Timers 31HZ and Jiffies 31Long Delays 33Short Delays 36Pentium Time Stamp Counter 36Real Time Clock 37Concurrency in the Kernel 39Spinlocks and Mutexes 39Atomic Operators 45Reader-Writer Locks 46Debugging 48Process Filesystem 49Allocating Memory 49Looking at the Sources 52Chapter 3 Kernel Facilities 55Kernel Threads 56Creating a Kernel Thread 56Process States and Wait Queues 61User Mode Helpers 63Helper Interfaces 65Linked Lists 65Hash Lists 72Work Queues 72Notifier Chains 74Completion Interface 78Kthread Helpers 81Error-Handling Aids 83Looking at the Sources 85Chapter 4 Laying the Groundwork 89Introducing Devices and Drivers 90Interrupt Handling 92Interrupt Context 92Assigning IRQs 94Device Example: Roller Wheel 94Softirqs and Tasklets 99The Linux Device Model 103Udev 103Sysfs, Kobjects, and Device Classes 106Hotplug and Coldplug 110Microcode Download 111Module Autoload 112Memory Barriers 114Power Management 114Looking at the Sources 115Chapter 5 Character Drivers 119Char Driver Basics 120Device Example: System CMOS 121Driver Initialization 122Open and Release 127Exchanging Data 129Seek 136Control 137Sensing Data Availability 139Poll 139Fasync 142Talking to the Parallel Port 145Device Example: Parallel Port LED Board 146RTC Subsystem 156Pseudo Char Drivers 157Misc Drivers 160Device Example: Watchdog Timer 160Character Caveats 166Looking at the Sources 1676556_Bookindb i6556_ix 3/4/08 9:31:21 AMChapter 6 Serial Drivers 171Layered Architecture 173UART Drivers 176Device Example: Cell Phone 178RS-485 191TTY Drivers 192Line Disciplines 194Device Example: Touch Controller 195Looking at the Sources 205Chapter 7 Input Drivers 207Input Event Drivers 210The Evdev Interface 210Input Device Drivers 216Serio 217Keyboards 217Mice 220Touch Controllers 227Accelerometers 228Output Events 228Debugging 230Looking at the Sources 231Chapter 8 The Inter-Integrated Circuit Protocol 233What's I2C/SMBus? 234I2C Core 235Bus Transactions 237Device Example: EEPROM 238Initializing 238Probing the Device 241Checking Adapter Capabilities 244Accessing the Device 244More Methods 246Device Example: Real Time Clock 247I2C-dev 251Hardware Monitoring Using LM-Sensors 251The Serial Peripheral Interface Bus 251The 1-Wire Bus 254Debugging 254Looking at the Sources 255Chapter 9 PCMCIA and Compact Flash 257What's PCMCIA/CF? 258Linux-PCMCIA Subsystem 260Host Controller Drivers 262PCMCIA Core 263Driver Services 263Client Drivers 264Data Structures 264Device Example: PCMCIA Card 267Tying the Pieces Together 271PCMCIA Storage 272Serial PCMCIA 272Debugging 273Looking at the Sources 275Chapter 10 Peripheral Component Interconnect 277The PCI Family 278Addressing and Identification 281Accessing PCI Regions 285Configuration Space 285I/O and Memory 286Direct Memory Access 288Device Example: Ethernet-Modem Card 292Initializing and Probing 293Data Transfer 301Debugging 308Looking at the Sources 308Chapter 11 Universal Serial Bus 311USB Architecture 312Bus Speeds 314Host Controllers 315Transfer Types 315Addressing 316Linux-USB Subsystem 317Driver Data Structures 317The usb_device Structure 318USB Request Blocks 319Pipes 321Descriptor Structures 322Enumeration 324Device Example: Telemetry Card 324Initializing and Probing 325Accessing Registers 332Data Transfer 335Class Drivers 338Mass Storage 339USB-Serial 345Human Interface Devices 348Bluetooth 348Gadget Drivers 348Debugging 349Looking at the Sources 351Chapter 12 Video Drivers 355Display Architecture 356Linux-Video Subsystem 359Display Parameters 361The Frame Buffer API 362Frame Buffer Drivers 365Device Example: Navigation System 365Console Drivers 380Device Example: Cell Phone Revisited 382Boot Logo 387Debugging 387Looking at the Sources 388Chapter 13 Audio Drivers 391Audio Architecture 392Linux-Sound Subsystem 394Device Example: MP3 Player 396Driver Methods and Structures 399ALSA Programming 409Debugging 412Looking at the Sources 412Chapter 14 Block Drivers 415Storage Technologies 416Linux Block I/O Layer 421I/O Schedulers 422Block Driver Data Structures and Methods 423Device Example: Simple Storage Controller 426Initialization 427Block Device Operations 430Disk Access 432Advanced Topics 434Debugging 436Looking at the Sources 437Chapter 15 Network Interface Cards 439Driver Data Structures 440Socket Buffers 441The Net Device Interface 443Activation 444Data Transfer 444Watchdog 445Statistics 445Configuration 446Bus Specific 448Talking with Protocol Layers 448Receive Path 448Transmit Path 449Flow Control 449Buffer Management and Concurrency Control 450Device Example: Ethernet NIC 451ISA Network Drivers 457Asynchronous Transfer Mode 458Network Throughput 459Driver Performance 459Protocol Performance 461Looking at the Sources 461Chapter 16 Linux Without Wires 465Bluetooth 467BlueZ 469Device Example: CF Card 471Device Example: USB Adapter 471RFCOMM 473Networking 475Human Interface Devices 477Audio 477Debugging 478Looking at the Sources 478Infrared 478Linux-IrDA 480Device Example: Super I/O Chip 482Device Example: IR Dongle 483IrComm 486Networking 486IrDA Sockets 487Linux Infrared Remote Control 488Looking at the Sources 489WiFi 489Configuration 490Device Drivers 494Looking at the Sources 496Cellular Networking 496GPRS 496CDMA 498Current Trends 500Chapter 17 Memory Technology Devices 503What's Flash Memory? 504Linux-MTD Subsystem 505Map Drivers 506Device Example: Handheld 506NOR Chip Drivers 511NAND Chip Drivers 513User Modules 516Block Device Emulation 516Char Device Emulation 517JFFS2 517YAFFS2 518MTD-Utils 518Configuring MTD 519eXecute In Place 520The Firmware Hub 520Debugging 524Looking at the Sources 524Chapter 18 Embedding Linux 527Challenges 528Component Selection 530Tool Chains 531Embedded Bootloaders 531Memory Layout 535Kernel Porting 537Embedded Drivers 538Flash Memory 538UART 539Buttons and Wheels 539PCMCIA/CF 540SD/MMC 540USB 540RTC 541Audio 541Touch Screen 541Video 541CPLD/FPGA 542Connectivity 542Domain-Specific Electronics 542More Drivers 543The Root Filesystem 544NFS-Mounted Root 544Compact Middleware 546Test Infrastructure 548Debugging 548Board Rework 549Debuggers 550Chapter 19 Drivers in User Space 551Process Scheduling and Response Times 553The Original Scheduler 553The O(1) Scheduler 553The CFS Scheduler 555Response Times 555Accessing I/O Regions 558Accessing Memory Regions 562User Mode SCSI 565User Mode USB 567User Mode I2C 571UIO 573Looking at the Sources 574Chapter 20 More Devices and Drivers 577ECC Reporting 578Device Example: ECC-Aware Memory Controller 579Frequency Scaling 583Embedded Controllers 584ACPI 585ISA and MCA 587FireWire 588Intelligent Input/Output 589Amateur Radio 590Voice over IP 590High-Speed Interconnects 591InfiniBand 592RapidIO 592Fibre Channel 592iSCSI 593Chapter 21 Debugging Device Drivers 595Kernel Debuggers 596Entering a Debugger 597Kernel Debugger (kdb) 598Kernel GNU Debugger (kgdb) 600GNU Debugger (gdb) 604JTAG Debuggers 605Downloads 609Kernel Probes 609Kprobes 609Jprobes 614Return Probes 617Limitations 619Looking at the Sources 620Kexec and Kdump 620Kexec 620Kexec with Kdump 621Kdump 622Looking at the Sources 629Profiling 629Kernel Profiling with OProfile 629Application Profiling with Gprof 633Tracing 634Linux Trace Toolkit 634Linux Test Project 638User Mode Linux 638Diagnostic Tools 638Kernel Hacking Config Options 639Test Equipment 640Chapter 22 Maintenance and Delivery 641Coding Style 642Change Markers 642Version Control 643Consistent Checksums 643Build Scripts 645Portable Code 647Chapter 23 Shutting Down 649Checklist 650What Next? 651Appendix A Linux Assembly 653Debugging 659Appendix B Linux and the BIOS 661Real Mode Calls 662Protected Mode Calls 665BIOS and Legacy Drivers 666Appendix C Seq Files 669The Seq File Advantage 670Updating the NVRAM Driver 677Looking at the Sources 679Index 681

Promotional Information

"Probably the most wide ranging and complete Linux device driver book I've read."--Alan Cox, Linux Guru and Key Kernel Developer "Very comprehensive and detailed, covering almost every single Linux device driver type."--Theodore Ts'o, First Linux Kernel Developer in North America and Chief Platform Strategist of the Linux Foundation The Most Practical Guide to Writing Linux Device DriversLinux now offers an exceptionally robust environment for driver development: with today's kernels, what once required years of development time can be accomplished in days. In this practical, example-driven book, one of the world's most experienced Linux driver developers systematically demonstrates how to develop reliable Linux drivers for virtually any device. Essential Linux Device Drivers is for any programmer with a working knowledge of operating systems and C, including programmers who have never written drivers before. Sreekrishnan Venkateswaran focuses on the essentials, bringing together all the concepts and techniques you need, while avoiding topics that only matter in highly specialized situations. Venkateswaran begins by reviewing the Linux 2.6 kernel capabilities that are most relevant to driver developers. He introduces simple device classes; then turns to serial buses such as I2C and SPI; external buses such as PCMCIA, PCI, and USB; video, audio, block, network, and wireless device drivers; user-space drivers; and drivers for embedded Linux-one of today's fastest growing areas of Linux development. For each, Venkateswaran explains the technology, inspects relevant kernel source files, and walks through developing a complete example. * Addresses drivers discussed in no other book, including drivers for I2C, video, sound, PCMCIA, and different types of flash memory* Demystifies essential kernel services and facilities, including kernel threads and helper interfaces* Teaches polling, asynchronous notification, and I/O control* Introduces the Inter-Integrated Circuit Protocol for embedded Linux drivers* Covers multimedia device drivers using the Linux-Video subsystem and Linux-Audio framework* Shows how Linux implements support for wireless technologies such as Bluetooth, Infrared, WiFi, and cellular networking* Describes the entire driver development lifecycle, through debugging and maintenance* Includes reference appendixes covering Linux assembly, BIOS calls, and Seq files

About the Author

Sreekrishnan Venkateswaran has spent more than a decade working in IBM product development laboratories. He has ported Linux to devices ranging from wristwatches and music players to PDAs, VoIP phones, and even pacemaker programmers. He was a Contributing Editor and kernel columnist for Linux Magazine for more than two years.

Ask a Question About this Product More...
Write your question below:
Look for similar items by category
How Fishpond Works
Fishpond works with suppliers all over the world to bring you a huge selection of products, really great prices, and delivery included on over 25 million products that we sell. We do our best every day to make Fishpond an awesome place for customers to shop and get what they want — all at the best prices online.
Webmasters, Bloggers & Website Owners
You can earn a 5% commission by selling Venkateswa: Ess Linux Device Driv_c1 on your website. It's easy to get started - we will give you example code. After you're set-up, your website can earn you money while you work, play or even sleep! You should start right now!
Authors / Publishers
Are you the Author or Publisher of a book? Or the manufacturer of one of the millions of products that we sell. You can improve sales and grow your revenue by submitting additional information on this title. The better the information we have about a product, the more we will sell!
Back to top