Skip to content

Kernel Driver Topics

This section organizes the kernel driver learning path into reusable topic pages.

The original Day-based labs are still preserved, but this section is intended for review and lookup. It focuses on the common patterns that appear repeatedly in Linux character drivers, GPIO drivers, pollable drivers, and event-driven kernel-to-user notification paths.

Learning Path

Step Topic Main Idea Related Labs
1 Character Device Basics Register a character device and expose a file interface Day05, Day06
2 Platform Driver and Device Tree Binding Bind hardware description to a driver with compatible Day08, Day09, Day10
3 GPIO and IRQ Driver Use gpiod, IRQ handlers, and deferred processing Day09, Day11, Day13
4 Blocking and Non-blocking I/O Implement read paths with wait queues and O_NONBLOCK Day12, Day14, Day18, Day50
5 Wait Queue and poll Support Make a driver visible to poll, select, and epoll Day12, Day15, Day50, Day51
6 Driver Control Plane Separate data path from configuration path using ioctl or sysfs Day16, Day17
7 fasync and SIGIO Notify user space asynchronously from a driver Day52

Core Driver Model

Device Tree / platform device
        ↓ compatible match
platform_driver.probe()
        ↓ initialize hardware and software state
file_operations
        ↓ open/read/write/poll/ioctl/release
/dev/<name>
User-space application