IntroductionHigh availability systems impose unique requirements upon an operating system and its associated device drivers. Device drivers provide interfaces to system peripherals and communications lines. Device drivers can be a major source of operating system instability and many times contribute to system degradation and/or outages. In an attempt to minimize device drivers as the source of this instability and to further enhance the service availability of the system, this paper introduces the concepts of device driver hardening.
This white paper establishes a set of fundamental guidelines for device driver writers who wish to support higher levels of availability through the use of some or all of the hardening techniques documented in this paper. While hardening is the primary focus of paper, it will additionally cover aspects related to management of a driver such as statistics collection, diagnostics, and dynamic loading and unloading. These topics must also be carefully considered when designing a driver for high availability.