ChorusOS 5.0 Board Support Package Developer's Guide

Hardened Drivers

Hardening refers to the process of ensuring that software is resilient to hardware faults. It concerns the requirement for graceful degradation and failure when the hardware is faulty.

A hardened driver is a driver that is resilient to faults in the I/O device it controls, as well as faults originating outside the system core. The driver does not panic, hang, or allow propogation of corrupted data as a result of these types of faults.

When writing hardened drivers you must assume that even when the underlying device hardware is not working properly, the driver must continue to behave reasonably. The driver must respect the DDI protocols under a hardware failure condition.

All ChorusOS device drivers are held in a hierarchical tree, the ChorusOS device driver framework, to aid referencing and maintenance. A hardened driver must be catered for in that framework. For further information regarding the device driver framework refer to Part III. In order to obtain the desired fail-safe behavior of a leaf device driver, the bus/nexus drivers stored in the path from the DKI to that hardened leaf device driver should also be hardened. Moreover, the operating system as a whole, including the microkernel, drivers, POSIX sub-system and other system actors must be hardened for the hardening effort at microkernel driver level to be effective.