A solution to the problem of maintaining application integrity when device
drivers fail. This solution employs a new mechanism, the shadow driver,
which is an operating system (OS) kernel agent that monitors
communication between the OS kernel and the device driver it "shadows."
When a device driver error occurs, the shadow driver acts in place of the
failed device driver, intercepting and responding to calls from the OS
kernel and the device driver during cleanup, unloading, reloading, and
re-initialization of the failed device driver. Applications and the OS
kernel are thus isolated from the failure. An initial embodiment was
developed for use with the Linux.TM. OS and was tested with a dozen
device drivers. Results demonstrate that shadow drivers successfully mask
device driver failures from applications, impose minimal performance
overhead, require no changes to existing applications and device drivers,
and can be implemented with relatively little code.