DRV-110 · Device Drivers

The Unified Device Model

Buses, devices, drivers and classes — the abstraction that makes probe and bind work across every subsystem.

Practitioner 3 days in person6 half-days online Max 14 in person

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

DRV-101 or an equivalent working character driverC and comfort reading kernel sourceBasic familiarity with /sys layout

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

  1. Lab: Trace a real bind from modalias to probe with ftrace events and /sys; draw the live object graph
  2. Lab: Register your own bus type with match and probe; bind a device and driver on it end to end
  3. Lab: Force a deferred probe with a missing dependency and explain the retry order from the boot log
  4. Lab: Convert a driver's manual resource cleanup to devm_* and count the error paths you deleted
  5. 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

DatesWhereSeatsEarly birdRegular
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 OctOMR 810
8 Nov – 15 Nov 20266 half-days Gulf bandLive online · 09:00–13:00 GMT+3 14 of 20 US$1,350until 9 OctUS$1,500
9 Nov – 11 Nov 20263 full days OttawaIn person · Kanata North Tech Park 11 of 14 CAD 2,570until 10 OctCAD 2,860
16 Nov – 18 Nov 20263 full days TorontoIn person · MaRS Discovery District 6 of 14 CAD 2,570until 17 OctCAD 2,860
16 Nov – 23 Nov 20266 half-days Europe bandLive online · 09:00–13:00 CET 3 of 20 US$1,350until 17 OctUS$1,500
16 Nov – 23 Nov 20266 half-days Americas bandLive online · 13:00–17:00 ET 8 of 20 US$1,350until 17 OctUS$1,500
23 Nov – 25 Nov 20263 full days LondonIn person · Shoreditch Works 11 of 14 GBP 1,480until 24 OctGBP 1,640
23 Nov – 25 Nov 20263 full days BerlinIn person · Factory Görlitzer Park 6 of 14 EUR 1,740until 24 OctEUR 1,930

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