Driver Atlas

Buffers, Queues, and Waiting Rooms

Three ways a driver stack represents data, pending work, and differences in timing.

A buffer holds representation

A buffer is a region in which data is stored while it moves between components or waits for a device. Its size, ownership, lifetime, and mapping determine what can safely read or write the contents.

A queue holds requests

A queue orders work that cannot be accepted immediately or should be coordinated with other requests. It can express priority, cancellation, serialization, and completion ownership depending on the stack’s contract.

Waiting is part of a lifecycle

A pending request is not necessarily a failed request. It may be waiting for a transfer, power state, resource, or device response. The status and owner explain what the stack expects next.

Names are not interchangeable

Buffers contain data, queues represent work, and a waiting state describes a lifecycle relationship. A reference that keeps these concepts distinct can explain a stack without implying that all waiting work has the same cause.

Reference facts

Buffer
Storage for data while ownership or timing changes.
Queue
An ordered representation of pending requests and their ownership.

Questions and answers

Is a queued request the same as a buffered packet?

No. A request is work with lifecycle and completion semantics; a buffer is storage for data. One request can reference one or more buffers.

Does pending mean failed?

No. Pending means the stack has not completed the request and has a defined reason or owner for waiting.

Further reading