Device Drivers
Where the kernel meets real hardware.
The Linux Driver Model
The Linux Driver Model is the elegant object-oriented spine that lets thousands of drivers speak a single language to buses, devices, and the kernel itself.
Character Device Drivers
Build a real character device driver from scratch — mastering the major/minor system, the file_operations vtable, and the kernel/userspace memory boundary that makes Linux drivers both powerful and safe.
Block Device Drivers
Build a working /dev/ block device from scratch by mastering gendisk, blk-mq tag sets, and the complete I/O path from write() to your driver's queue_rq callback.
Platform Devices & the Device Tree
Master the Device Tree and platform driver — the machinery that lets a single Linux kernel binary boot on thousands of different ARM boards without knowing their hardware at compile time.
Interrupt Handling in Drivers
Master the complete lifecycle of a hardware interrupt inside a Linux driver — from the electrical signal to request_irq(), the top/bottom-half split, threaded handlers, and the strict rules of atomic context.
Concurrency & Locking in Drivers
Master the rules that separate correct concurrent driver code from the kind that silently corrupts data, hangs machines, and makes it into CVE advisories.
Accessing Hardware: MMIO & ioremap
Master the kernel's precise contracts for reaching hardware registers and making devices read and write RAM safely — the foundation every real device driver is built on.
Writing Your First Real Driver
Build a complete Linux character driver from zero — probe, sysfs, read/write, ioctl, and testing — and understand exactly why every line exists.