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
Related Notes¶
- Linux Kernel Module
- Character Device Driver Notes
- Linux GPIO Driver
- GPIO Driver with IRQ
- Driver I/O Model
- Event-Driven I/O in Linux
- IOCTL and Control Plane
- Sysfs vs ioctl
- Pollable Character Driver
- Linux fasync / SIGIO / eventfd Notes