Driver Atlas

How Drivers Work

A layered explanation of requests, queues, resources, interrupts, and completion.

Requests move through layers

An application expresses intent through a subsystem API. The subsystem represents that intent as an interface request, and one or more driver layers translate it into transport or device operations.

The request changes shape as it travels. A keystroke can become an input report, a controller transfer, and finally a character event; a disk read can become a queued command aimed at a storage device. Each layer adds the details its hardware contract requires without changing the original purpose.

Resources need owners

Buffers, queues, memory mappings, interrupts, power references, and device handles each have a lifecycle. A driver’s work includes assigning and releasing ownership in an order the surrounding stack understands.

Ownership is concrete, not merely administrative. A USB endpoint may have a buffer reserved for an in-flight transfer, an audio engine may hold several timed blocks, and a display engine may retain a frame surface until scan-out is complete. Releasing any of these objects too early can break the contract between layers.

The device communicates back

Completion signals, status fields, descriptors, and interrupts report what the hardware accepted or completed. A driver interprets those signals in the context of the outstanding request and device state.

A completion is more informative when its subject is named. “Done” might mean that a controller accepted a command, that a transfer reached an endpoint, or that data is ready for the next component. The same physical device can emit several kinds of status because its interfaces have different jobs.

Context is the key

The same word—start, stop, pending, or available—can refer to different layers. A useful explanation names the object, interface, and lifecycle state instead of treating every status as a device-wide verdict.

A keyboard can be present while one input interface is inactive; a printer can be reachable while its queue has no active job; a graphics adapter can be initialized while no display sink is connected. Those examples are not contradictions. They are reminders that driver language describes a relationship, not the entire hardware arrangement at once.

Following a request means following the object across those boundaries. A sensor sample is not the same record as an interrupt, just as a queued print job is not the same record as paper movement. This distinction makes the architecture readable without assigning every event to the hardware itself.

Reference facts

Request lifecycle
Represent, validate, queue, submit, complete, and release.
Resource principle
Every shared object needs a documented owner and lifetime.

Questions and answers

What does a driver do between API and device?

It validates and translates a structured request, coordinates resources and timing, submits device work, and reports completion according to the stack contract.

Why can a request remain pending?

It can be waiting for a queue, resource, power state, bus transfer, or device response. Pending is a lifecycle state, not a complete explanation.

Further reading