Course : Linux kernel and device drivers programing

Linux kernel and device drivers programing






INTER
IN-HOUSE
CUSTOM

Practical course in person or remote class
Available in English on request

Ref. LDI
  4d - 28h00
Price : 2450 CHF E.T.







Practical details
Case study
A large numbers of concrete and progressive case studies will enable you to understand the internal of the kernel.

Course schedule

1
Linux kernel programing overview

  • Getting the sources. Participating to the LKML. Licenses issues. Overview of the Linux kernel.
  • Development tools. The GNU C Compiler and associated tools. indexing the kernel.
  • A module primer. Loading a linux module. Using printk and dmesg.
  • Loading the kernel and modules.
Hands-on work
The "hello world" module. Creation of a patch for the LKML.

2
Essential Linux kernel interface

  • Processes and threads. Kernel data structures task_struct, current and the thread_info.
  • Memory management. User and kernel memory spaces. UMA, NUMA, Nodes and zones.
  • Synchronizations. Thread context and interrupt context. atomic operations.
  • The kernel notion of time. Xtime, jiffies and HZ using delays and sleeps.
  • Handling signals in the kernel. Sending and receiving signals in the kernel.
Hands-on work
Creation of little modules implementing single kernel functionalities like wait queues, completions, timers, procs interface, kernel threads and signals.

3
Interfacing with the Virtual File System

  • Registering with the VFS.
  • Essentials VFS callback.
  • Extending the registration.
Hands-on work
Creation of a complete driver implementing a pipeline using most of the kernel utilities, memory allocation and timers. Tests using standard UNIX cat(1) command.

4
Interfacing with the hardware

  • Accessing memory and devices.
  • Managing DMA.
  • Interrupt handling.
Hands-on work
Extension of the previous driver with interrupt handling. Creation of a little module mapping physical memory for a dedicated user program.

5
The Linux Driver Framework

  • Overview. The Linux 2.6/3.x object oriented interface for drivers Kset, kobjects and kref
  • Object description of device access.
  • Implication on driver's development.
  • Power management.
Hands-on work
Extension of the previous driver with the integration into the Linux driver framework and with power management callbacks.

6
Linux Kernel Subsystems

  • Storage. Data structures and implementation of block drivers.
  • Network. The sockets and socket buffers: skbuf.
  • Input. Data structures and interface with the Linux driver framework.
  • USB. Overview, implementation and data structures.
Hands-on work
Implementation of small modules implementing a basic network interface. Implementation of an input driver moving the mouse according to a simple character interface.


Customer reviews
4,7 / 5
Customer reviews are based on end-of-course evaluations. The score is calculated from all evaluations within the past year. Only reviews with a textual comment are displayed.


Dates and locations

Dernières places
Date garantie en présentiel ou à distance
Session garantie
From 23 to 26 September 2025
FR
Remote class
Registration
From 23 to 26 September 2025
EN
Remote class
Registration
From 9 to 12 December 2025
FR
Remote class
Registration
From 9 to 12 December 2025
EN
Remote class
Registration
From 10 to 13 March 2026
FR
Remote class
Registration
From 10 to 13 March 2026
EN
Remote class
Registration
From 2 to 5 June 2026
FR
Remote class
Registration
From 2 to 5 June 2026
EN
Remote class
Registration
From 15 to 18 September 2026
FR
Remote class
Registration
From 15 to 18 September 2026
EN
Remote class
Registration
From 24 to 27 November 2026
FR
Remote class
Registration
From 24 to 27 November 2026
EN
Remote class
Registration