Specifications
1
Data Structures
This chapter provides a condensed description of those data structures referenced
by driver code. It lists their fields in the order in which they appear in the
structures. All data structures discussed in this chapter—with the exception of
the channel control block (CCB)—exist in nonpaged system memory.
Many of these structures—including the adapter control block (ADP), channel
control block (CCB), channel request block (CRB), configuration control block
(ACF), device data block (DDB), driver dispatch table (DDT), driver prologue
table (DPT), object rights block (ORB), I/O request packet (IRP), I/O request
packet extension (IRPE), and unit control block (UCB)—are collectively known as
the I/O database. (See Figure 1–1.) The structures in the I/O database help the
operating system and device drivers monitor the status and control the functions
of the I/O subsystem. They provide the following types of information:
• Descriptions of each pending and in-progress I/O request
• Characteristics of each device type
• Number and type of each device unit
• Status of current activity on each device unit
• External entry points to all device drivers
• Entry points for controller and device unit initialization routines
• Code that dispatches interrupts to the appropriate servicing routines
• Addresses of device registers
• Bit maps describing the allocation of data paths and map registers
Aside from the I/O database structures, this chapter includes descriptions of
those data structures used by the operating system to maintain multiprocessing
synchronization and record processor-specific information: the spinlock data
structure (SPL) and the per-CPU database structure (CPU), respectively. This
chapter also describes the structures that implement the SCSI port interface
that supports the creation of SCSI class driver, as well as those structures used
to access the control registers of a device attached to a remote bus (CRAM and
CRAMH).
1–1