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.