| Previous | Next |
| kIOReturnUnsupportedMode | kIOReturnOverrun |
kIOReturnUnderrun
The consumer reached an empty part of the stream
kIOReturnUnderrun reports that data was not available when the relevant I/O path needed it. It is a stream-rate problem, not a generic device-disconnection result. Depending on the driver and direction, the empty point can be a device FIFO, a DMA ring, or a software queue. The same symbol therefore needs the transfer direction and family-specific logs before assigning blame to the application or hardware.
For real-time or isochronous work, data that misses its delivery window is usually not recoverable by retransmission. A large one-off buffer may hide the symptom temporarily but can increase latency and still leave the producer unable to sustain the required rate.
What to measure
- Record buffer fill level, queued transfer count, production rate, completion cadence, and the exact direction of the stream.
- Find the first queue that becomes empty: application producer, user-client boundary, driver queue, or device-side buffer.
- Keep callbacks and completion handlers short so they do not delay resubmission of the next transfer.
- When the protocol permits, use a documented queue depth and pacing model rather than relying on arbitrary retry loops.
References
Looking for a different code? Search another status or error code.