Course Outline

Developing Linux Device Drivers

  1. Introduction
  2. Preliminaries
  3. Device Drivers
  4. Modules and Device Drivers
  5. Memory Management and Allocation
  6. Character Devices
  7. Kernel Features
  8. Transferring Between User and Kernel Space
  9. Interrupts and Exceptions
  10. Timing Measurements
  11. Kernel Timers
  12. ioctls
  13. Unified Device Model and sysfs
  14. Firmware
  15. Sleeping and Wait Queues
  16. Interrupt Handling: Deferrable Functions and User Drivers
  17. Hardware I/O
  18. PCI
  19. Platform Drivers**
  20. Device Trees**
  21. Direct Memory Access (DMA)
  22. Network Drivers I: Basics
  23. Network Drivers II: Data Structures
  24. Network Drivers III: Transmission and Reception
  25. Network Drivers IV: Selected Topics
  26. USB Drivers
  27. Power Management
  28. Block Drivers
** These sections may be considered in part or in whole as optional. They contain either background reference material, specialized topics, or advanced subjects. The instructor may choose to cover or not cover them depending on classroom experience and time constraints.