Developing Linux Device Drivers

Developing Linux Device Drivers Training

Developing Linux Device Drivers training is targeted at experienced developers, programmers and engineers who are interested in learning how to write device drivers for Linux, especially those who have been assigned to a team tasked with designing such a system.

The attendees should proficient with C, be familiar with basic Linux command line tools, experience writing kernel modules and building kernels. It is recommended for delegates with previous experience with any major Linux distribution.


Contact us to book your seat. Training may be done on-site or at our training venues in Durban, Cape Town and Johannesburg.


Course Duration Price ZAR(ex vat) Price USD
Developing Linux Device Drivers Training Summary
Developing Linux Device Drivers Training 4 days R8,000 $650

Course Outline

The course shows experienced programmers how to develop device drivers for Linux systems, grounded with a basic familiarity and understanding of the underlying Linux kernel. Upon mastering this material, you will be familiar with the different kinds of device drivers used under Linux, and know the appropriate APIs through which devices (both hardware and software) interface with the kernel. This five day course includes extensive hands-on exercises and demonstrations designed to give you the necessary tools to develop Linux device drivers.

The course is based on both the most upstream recent Linux kernel version, and maintains compatibility with the kernel versions used by at least the last two releases of the major Linux distributions.


  • Introduction
  • Preliminaries
  • Device Drivers
  • Modules and Device Drivers
  • Memory Management and Allocation
  • Character Devices
  • Kernel Features
  • Transferring Between User and Kernel Space
  • Interrupts and Exceptions
  • Timing Measurements
  • Kernel Timers
  • ioctls
  • Unified Device Model and sysfs
  • Firmware
  • Sleeping and Wait Queues
  • Interrupt Handling: Deferrable Functions and User Drivers
  • Hardware I/O
  • PCI
  • Platform Drivers**
  • Device Trees**
  • Direct Memory Access (DMA)
  • Network Drivers I: Basics
  • Network Drivers II: Data Structures
  • Network Drivers III: Transmission and Reception
  • Network Drivers IV: Selected Topics
  • USB Drivers
  • Power Management
  • Block Drivers