At a Glance
Paperback
352 Pages
352 Pages
Dimensions(cm)
23.4 x 17.8 x 2.2
23.4 x 17.8 x 2.2
Paperback
$71.25
or 4 interest-free payments of $17.81 with
orAims to ship in 10 to 15 business days
Device drivers make it possible for your software to communicate with your hardware, and because every operating system has specific requirements, driver writing is nontrivial. When developing for FreeBSD, you've probably had to scour the Internet and dig through the kernel sources to figure out how to write the drivers you need. Thankfully, that stops now. In FreeBSD Device Drivers, Joseph Kong will teach you how to master everything from the basics of building and running loadable kernel modules to more complicated topics like thread synchronization. After a crash course in the different FreeBSD driver frameworks, extensive tutorial sections dissect real-world drivers like the parallel port printer driver.
You'll learn-
-All about Newbus, the infrastructure used by FreeBSD to manage the hardware devices on your system
-How to work with ISA, PCI, USB, and other buses
-The best ways to control and communicate with the hardware devices from user space
-How to use Direct Memory Access (DMA) for maximum system performance
-The inner workings of the virtual null modem terminal driver, the USB printer driver, the Intel PCI Gigabit Ethernet adapter driver, and other important drivers
-How to use Common Access Method (CAM) to manage host bus adapters (HBAs)
Concise descriptions and extensive annotations walk you through the many code examples. Don't waste time searching man pages or digging through the kernel sources to figure out how to make that arcane bit of hardware work with your system. FreeBSD Device Drivers gives you the framework that you need to write any driver you want, now.
Device drivers make it possible for your software to communicate with your hardware, and because every operating system has specific requirements, driver writing is nontrivial. When developing for FreeBSD, you've probably had to scour the Internet and dig through the kernel sources to figure out how to write the drivers you need. Thankfully, that stops now. In FreeBSD Device Drivers, Joseph Kong will teach you how to master everything from the basics of building and running loadable kernel modules to more complicated topics like thread synchronization. After a crash course in the different FreeBSD driver frameworks, extensive tutorial sections dissect real-world drivers like the parallel port printer driver.
You'll learn-
-All about Newbus, the infrastructure used by FreeBSD to manage the hardware devices on your system
-How to work with ISA, PCI, USB, and other buses
-The best ways to control and communicate with the hardware devices from user space
-How to use Direct Memory Access (DMA) for maximum system performance
-The inner workings of the virtual null modem terminal driver, the USB printer driver, the Intel PCI Gigabit Ethernet adapter driver, and other important drivers
-How to use Common Access Method (CAM) to manage host bus adapters (HBAs)
Concise descriptions and extensive annotations walk you through the many code examples. Don't waste time searching man pages or digging through the kernel sources to figure out how to make that arcane bit of hardware work with your system. FreeBSD Device Drivers gives you the framework that you need to write any driver you want, now.
You'll learn-
-All about Newbus, the infrastructure used by FreeBSD to manage the hardware devices on your system
-How to work with ISA, PCI, USB, and other buses
-The best ways to control and communicate with the hardware devices from user space
-How to use Direct Memory Access (DMA) for maximum system performance
-The inner workings of the virtual null modem terminal driver, the USB printer driver, the Intel PCI Gigabit Ethernet adapter driver, and other important drivers
-How to use Common Access Method (CAM) to manage host bus adapters (HBAs)
Concise descriptions and extensive annotations walk you through the many code examples. Don't waste time searching man pages or digging through the kernel sources to figure out how to make that arcane bit of hardware work with your system. FreeBSD Device Drivers gives you the framework that you need to write any driver you want, now.
Device drivers make it possible for your software to communicate with your hardware, and because every operating system has specific requirements, driver writing is nontrivial. When developing for FreeBSD, you've probably had to scour the Internet and dig through the kernel sources to figure out how to write the drivers you need. Thankfully, that stops now. In FreeBSD Device Drivers, Joseph Kong will teach you how to master everything from the basics of building and running loadable kernel modules to more complicated topics like thread synchronization. After a crash course in the different FreeBSD driver frameworks, extensive tutorial sections dissect real-world drivers like the parallel port printer driver.
You'll learn-
-All about Newbus, the infrastructure used by FreeBSD to manage the hardware devices on your system
-How to work with ISA, PCI, USB, and other buses
-The best ways to control and communicate with the hardware devices from user space
-How to use Direct Memory Access (DMA) for maximum system performance
-The inner workings of the virtual null modem terminal driver, the USB printer driver, the Intel PCI Gigabit Ethernet adapter driver, and other important drivers
-How to use Common Access Method (CAM) to manage host bus adapters (HBAs)
Concise descriptions and extensive annotations walk you through the many code examples. Don't waste time searching man pages or digging through the kernel sources to figure out how to make that arcane bit of hardware work with your system. FreeBSD Device Drivers gives you the framework that you need to write any driver you want, now.
Dedication; About the Technical Reviewer; Foreword; Acknowledgments; Introduction; Who Is This Book For?; Prerequisites; Contents at a Glance; Welcome Aboard!; Chapter 1: Building and Running Modules; 1.1 Types of Device Drivers; 1.2 Loadable Kernel Modules; 1.3 Hello, world!; 1.4 Compiling and Loading; 1.5 Character Drivers; 1.6 Mostly Harmless; 1.7 Block Drivers Are Gone; 1.8 Conclusion; Chapter 2: Allocating Memory; 2.1 Memory Management Routines; 2.2 malloc_type Structures; 2.3 Tying Everything Together; 2.4 Contiguous Physical Memory Management Routines; 2.5 A Straightforward Example; 2.6 Conclusion; Chapter 3: Device Communication and Control; 3.1 ioctl; 3.2 Defining ioctl Commands; 3.3 Implementing ioctl; 3.4 Invoking ioctl; 3.5 sysctl; 3.6 Implementing sysctls, Part 1; 3.7 sysctl Context Management Routines; 3.8 Creating Dynamic sysctls; 3.9 Implementing sysctls, Part 2; 3.10 Conclusion; Chapter 4: Thread Synchronization; 4.1 A Simple Synchronization Problem; 4.2 A More Complex Synchronization Problem; 4.3 Preventing Race Conditions; 4.4 Mutexes; 4.5 Mutex Management Routines; 4.6 Implementing Mutexes; 4.7 Shared/Exclusive Locks; 4.8 Shared/Exclusive Lock Management Routines; 4.9 Implementing Shared/Exclusive Locks; 4.10 Reader/Writer Locks; 4.11 Reader/Writer Lock Management Routines; 4.12 Condition Variables; 4.13 Condition Variable Management Routines; 4.14 General Guidelines; 4.15 Conclusion; Chapter 5: Delaying Execution; 5.1 Voluntary Context Switching, or Sleeping; 5.2 Implementing Sleeps and Condition Variables; 5.3 Kernel Event Handlers; 5.4 Callouts; 5.5 Callouts and Race Conditions; 5.6 Taskqueues; 5.7 Conclusion; Chapter 6: Case Study: Virtual Null Modem; 6.1 Prerequisites; 6.2 Code Analysis; 6.3 Conclusion; Chapter 7: Newbus and Resource Allocation; 7.1 Autoconfiguration and Newbus Drivers; 7.2 Tying Everything Together; 7.3 Hardware Resource Management; 7.4 Conclusion; Chapter 8: Interrupt Handling; 8.1 Registering an Interrupt Handler; 8.2 Interrupt Handlers in FreeBSD; 8.3 Implementing an Interrupt Handler; 8.4 Generating Interrupts on the Parallel Port; 8.5 Conclusion; Chapter 9: Case Study: Parallel Port Printer Driver; 9.1 Code Analysis; 9.2 Conclusion; Chapter 10: Managing and Using Resources; 10.1 I/O Ports and I/O Memory; 10.2 Memory Barriers; 10.3 Tying Everything Together; 10.4 Conclusion; Chapter 11: Case Study: Intelligent Platform Management Interface Driver; 11.1 Code Analysis; 11.2 Conclusion; Chapter 12: Direct Memory Access; 12.1 Implementing DMA; 12.2 Creating DMA Tags; 12.3 Tearing Down DMA Tags; 12.4 DMA Map Management Routines, Part 1; 12.5 Loading (DMA) Buffers into DMA Maps; 12.6 DMA Map Management Routines, Part 2; 12.7 A Straightforward Example; 12.8 Synchronizing DMA Buffers; 12.9 Conclusion; Chapter 13: Storage Drivers; 13.1 disk Structures; 13.2 disk Structure Management Routines; 13.3 Block I/O Structures; 13.4 Block I/O Queues; 13.5 Tying Everything Together; 13.6 Block I/O Completion Routines; 13.7 Conclusion; Chapter 14: Common Access Method; 14.1 How CAM Works; 14.2 A (Somewhat) Simple Example; 14.3 SIM Registration Routines; 14.4 Action Routines; 14.5 Conclusion; Chapter 15: USB Drivers; 15.1 About USB Devices; 15.2 More About USB Devices; 15.3 USB Configuration Structures; 15.4 USB Transfers (in FreeBSD); 15.5 USB Configuration Structure Management Routines; 15.6 USB Methods Structure; 15.7 Tying Everything Together; 15.8 Conclusion; Chapter 16: Network Drivers, Part 1: Data Structures; 16.1 Network Interface Structures; 16.2 Network Interface Structure Management Routines; 16.3 Network Interface Media Structures; 16.4 Network Interface Media Structure Management Routines; 16.5 Hello, world!; 16.6 mbuf Structures; 16.7 Message Signaled Interrupts; 16.8 Implementing MSI; 16.9 MSI Management Routines; 16.10 Conclusion; Chapter 17: Network Drivers, Part 2: Packet Reception and Transmission; 17.1 Packet Reception; 17.2 Packet Transmission; 17.3 Post Packet Transmission; 17.4 Conclusion; References; Colophon; UPDATES;
ISBN: 9781593272043
ISBN-10: 1593272049
Series: NO STARCH PRESS
Published: 7th May 2012
Format: Paperback
Language: English
Number of Pages: 352
Audience: General Adult
Publisher: RANDOM HOUSE US
Country of Publication: US
Dimensions (cm): 23.4 x 17.8 x 2.2
Weight (kg): 0.69
Shipping
Standard Shipping | Express Shipping | |
---|---|---|
Metro postcodes: | $9.99 | $14.95 |
Regional postcodes: | $9.99 | $14.95 |
Rural postcodes: | $9.99 | $14.95 |
How to return your order
At Booktopia, we offer hassle-free returns in accordance with our returns policy. If you wish to return an item, please get in touch with Booktopia Customer Care.
Additional postage charges may be applicable.
Defective items
If there is a problem with any of the items received for your order then the Booktopia Customer Care team is ready to assist you.
For more info please visit our Help Centre.