Figure 5-1 illustrates a structural overview of a device driver. The shaded area of this figure highlights the driver data structures required for driver loading and the interfaces exported by the driver, which is subdivided into two parts: driver loading (performed by the kernel) and driver configuration.