DRV-110 · Device Drivers
The Unified Device Model
Buses, devices, drivers and classes — the abstraction that makes probe and bind work across every subsystem.
Who this course is for
Driver engineers who can write a char device but treat probe as magic — and need to understand the bus/device/driver machinery every real subsystem sits on.
Prerequisites
Course outline
Day 1 — The objects and their graph
- struct device, device_driver, bus_type and class and how they relate
- kobject and kset underneath: what the model is built from
- How /sys/bus and /sys/devices mirror the in-kernel graph
- Registering a minimal bus type
- Attribute plumbing: bus/device/driver attributes
Day 2 — Match, probe and bind
- Match functions and ID tables: how a driver claims a device
- Probe ordering, initcalls and deferred probe (-EPROBE_DEFER)
- driver_override and manual bind/unbind through sysfs
- remove and shutdown: what each must guarantee
- probe_type and synchronous vs asynchronous probing
Day 3 — Lifetime, resources and power
- Reference counting with get_device/put_device and the release callback
- Use-after-free patterns the model prevents and the ones it does not
- Device-managed resources (devm_*) and why they delete error paths
- Runtime power management: pm_runtime_get/put and autosuspend
- System suspend/resume callbacks and ordering constraints
Hands-on labs
Labs follow the academy model — 35% principles, 20% guided investigation, 45% engineering studio. Every claim you make in a lab is backed by a trace, a counter or a measurement you captured yourself. How we teach
- Lab: Trace a real bind from modalias to probe with ftrace events and /sys; draw the live object graph
- Lab: Register your own bus type with match and probe; bind a device and driver on it end to end
- Lab: Force a deferred probe with a missing dependency and explain the retry order from the boot log
- Lab: Convert a driver's manual resource cleanup to devm_* and count the error paths you deleted
- Lab: Exercise runtime PM: suspend and resume a device with pm_runtime and verify callback order with tracing
Capstone project
Refactor a provided legacy-style driver into a proper model citizen: ID-table matching, probe/remove, devm_* resources and runtime PM hooks — then prove lifetime correctness with a bind/unbind stress run, a kmemleak-clean rmmod and an object-lifetime diagram of the resulting /sys graph.
What you leave with
- A precise model of what probe, remove and deferred probe actually do
- Reference-counting habits that survive review
- Working fluency with devm_* resource management
- Runtime PM hooks implemented and traced, not just named
- The ability to read any subsystem's bus glue without fear
How it runs
Every course follows the same model: 35% principles, 20% guided investigation, 45% engineering studio. You leave with working code, raw measurements and an evidence-based report — not a certificate of attendance. Read the methodology or see a full sample lesson.
Material is adapted to your kernel version, hardware and workload before a private delivery. For public cohorts, the environment is provided and configured.
Questions
Who is this course for?
Driver engineers who can write a char device but treat probe as magic — and need to understand the bus/device/driver machinery every real subsystem sits on. It sits at practitioner level within the Device Drivers track.
What do I need to know already?
Specific prerequisites for this course: DRV-101 or an equivalent working character driver; C and comfort reading kernel source; Basic familiarity with /sys layout. We confirm levels before the cohort starts and adapt if a group is stronger or weaker than expected.
Can this run privately for my team?
Yes. Any course runs on-site at your offices anywhere, or live online for a distributed team, with labs adapted to your hardware and codebase.
What is the difference between in-person and online?
In person is 3 full days with hardware on your desk, capped at 14. Online is 6 half-day sessions across about two weeks so you can keep working, capped at 20, with remote lab access.
Do you invoice companies?
Yes. Purchase orders are accepted and invoicing is available in USD, EUR, GBP, SAR and CAD.
Upcoming dates
| Dates | Where | Seats | Early bird | Regular | |
|---|---|---|---|---|---|
| 25 Oct – 27 Oct 20263 full days | RiyadhIn person · KAFD Conference Centre | 6 of 14 | — | SAR 7,880 | |
| 1 Nov – 3 Nov 20263 full days | Kuwait CityIn person · Al Hamra Tower | 11 of 14 | — | KWD 650 | |
| 8 Nov – 10 Nov 20263 full days | MuscatIn person · Knowledge Oasis Muscat | 6 of 14 | OMR 730until 9 Oct | ||
| 8 Nov – 15 Nov 20266 half-days | Gulf bandLive online · 09:00–13:00 GMT+3 | 14 of 20 | US$1,350until 9 Oct | ||
| 9 Nov – 11 Nov 20263 full days | OttawaIn person · Kanata North Tech Park | 11 of 14 | CAD 2,570until 10 Oct | ||
| 16 Nov – 18 Nov 20263 full days | TorontoIn person · MaRS Discovery District | 6 of 14 | CAD 2,570until 17 Oct | ||
| 16 Nov – 23 Nov 20266 half-days | Europe bandLive online · 09:00–13:00 CET | 3 of 20 | US$1,350until 17 Oct | ||
| 16 Nov – 23 Nov 20266 half-days | Americas bandLive online · 13:00–17:00 ET | 8 of 20 | US$1,350until 17 Oct | ||
| 23 Nov – 25 Nov 20263 full days | LondonIn person · Shoreditch Works | 11 of 14 | GBP 1,480until 24 Oct | ||
| 23 Nov – 25 Nov 20263 full days | BerlinIn person · Factory Görlitzer Park | 6 of 14 | EUR 1,740until 24 Oct |
Dates shown for the next few months. If nothing fits, tell us where and when — cohorts are added on demand, and private delivery can be scheduled any week.
More in Device Drivers
DRV-1013 days
Character Devices & sysfs
Your first working driver: character device registration, file operations, and exposing state through sysfs.
Practitioner-taught
SAR 6,750Next 15 Nov
DRV-1204 days
Platform Drivers & Device Tree
Describing non-discoverable hardware and writing the drivers that consume that description.
Practitioner-taught
SAR 10,500Next 11 Oct
DRV-2013 days
I2C & SPI Drivers
Client drivers for the two buses embedded hardware is built from, including regmap and error recovery.
Practitioner-taught
SAR 7,880Next 18 Oct
DRV-2104 days
USB Device Drivers
The USB stack from descriptors to URBs, on both the host and gadget sides.
Practitioner-taught
SAR 10,500Next 15 Nov
DRV-2204 days
PCI & PCIe Drivers
Enumeration, BARs, MSI-X and DMA for PCIe devices, which is where most accelerator drivers live.
Practitioner-taught
SAR 12,000Next 1 Nov
DRV-3013 days
DMA Engines & Mappings
Moving data without the CPU: the DMA API, coherency, IOMMU interaction and the bugs that only appear under load.
Practitioner-taught
SAR 9,000Next 8 Nov
DRV-3103 days
Interrupts & Threaded IRQs
Interrupt handling from the hardware edge to the bottom half, and how to keep hard IRQ context short.
Practitioner-taught
SAR 7,880Next 18 Oct