Device subsystem performance

The flow of events within the device subsystem is engineered to minimize overhead and maximize throughput when a device is in raw mode. To accomplish this, the following rules are used:

  • Interrupt handlers place received data directly into a memory queue. Only when a read operation is pending, and that read operation can be satisfied, will the interrupt handler schedule the driver to run. In all other cases, the interrupt simply returns. Moreover, if io-char is already running, no scheduling takes place, since the availability of data will be noticed without further notification.
  • When a read operation is satisfied, the driver replies to the application process directly from the raw input buffer into the application's receive buffer. The net result is that the data is copied only once.

These rules—coupled with the extremely small interrupt and scheduling latencies inherent within the OS—result in a very lean input model that provides POSIX conformance together with extensions suitable to the realtime requirements of protocol implementations.

Page updated: