The two sample drivers used in this chapter are a CMOS RAM driver (udi_cmos) and a pseudo-device driver (pseudod).
The following diagram shows the basic module, region, and channel structure for the two drivers.
udi_cmos and pseudod Driver Architecture
These drivers exhibit a simple UDI driver architecture with one region and three channels.
As with any UDI driver, both drivers open a management communication channel with the Management Agent, which controls driver configuration and operating conditions. This channel is driven by the Management Agent.
Both drivers define a communciation chanel with the GIO Mapper. This channel is used primarily in these drivers to read from and write to the device, to service calls from the UDI environment, and for interrupt processing.
Finally, both drivers establish a communication channel with the Bus Bridge Mapper to bind to the device; this sets up the physical I/O mappings necessary for the driver to communicate with the device. Although the driver will use the GIO metalanguage to perform reads and writes (since no specialized metalangauge exists for these devices), the mappings are necessarily set up on the channel to the bridge.
For the udi_cmos driver, the device is the CMOS RAM on the motherboard; for pseudod, the device is a file that simulates a hardware device.
A driver's basic region, module, and channel architecture is reflected in its static property definitions in the udiprops.txt file.