page header photo
share Twitter share LinkedIn

course Linux device drivers

This course is specific to the Linux system

This course teaches the design and construction of a device driver for Linux systems. In-depth information about the interface between the device driver and the rest of the Linux kernel is an important part of the course. Read more >>>

Target audience

  • This course is intended for experienced (system) programmers who have to design, develop and maintain device drivers for Linux.
Duration: 4 days       
Price € 2395,- plus VAT       

Scheduled dates

This course will be scheduled by request only, or as an in-company training. Our course administration maintains a waiting list of interested individuals. Joining that list is without obligation whatsoever.

Detailed information about this course


It requires certain precautions to connect new device hardware to a Linux machine. Apart from the required hardware interfaces, additional code must be added to the Linux kernel to interface between the hardware and the generic kernel routines of the I/O-subsystem. In order to write a device driver detailed knowledge is required of the internal concepts of certain parts of the Linux kernel, of the way the Linux kernel communicates with the device driver (and vice versa) and of the way a device driver handles the physical device. In addition, experience is needed with various types of device drivers and the way a new device driver can be loaded into the kernel.

A step by step construction of an actual device driver is part of the course, adding features as their theoretical coverage progresses.

The specific details of USB drivers are a separate topic in this course.

Prerequisite knowledge

Students must be fluent in C programming. Furthermore, a general understanding of Linux system programming is preferred.

Technical content of the course

The course will cover:

  • Recapitulation of kernel mechanisms.
  • General functionality of a driver: different types of drivers, physical I/O, major and minor numbers. Loadable versus static drivers.
  • Driver entry points: character, block, network.
  • General mechanisms: Sleep and wakeup (wait queues). Buffer allocation. Timer handling. Interrupt handling.
  • Configuration and initialization: Error logging, debugging, the /sys and /dev file systems.
  • Character drivers: Data transport between user mode and kernel mode, error codes, the ioctl interface.
  • Block drivers: Buffer management, mount and unmount, request queues and the request-routine, interrupt and start routines.
  • USB drivers: the USB-skeleton driver dissected, probe, release, including an extensive lab exercise using a hardware board available to each student in the class-room.

Block and network drivers are extensively covered in the course handouts, but experience shows that students prefer character drivers to take up all course hours. Please contact us in time before the course if block and/or network drivers are important to you.

The specific hardware details of devices must be obtained from the documents of the hardware manufacturer.


Linux Foundation Authorized Training Partner Course attendees receive a practice book containing copies of the presentations, sample driver texts, exercises, answers to the exercises, and background information. In addition, the course documentation of the Linux Foundation course LFD430 is part of the handouts.


Shortly after the course the student will receive a certificate as a proof of participation.

Valid XHTML 1.0 Strict   Valid CSS2