Specifications

Data Structures
1.19 Unit Control Block (UCB)
Table 1–22 (Cont.) Contents of Unit Control Block
Field Name Contents
DC$_WORKSTATION Workstation
DC$_REALTIME Real time
DC$_BUS Bus
DC$_MAILBOX Mailbox
DC$_DECVOICE DECVoice
DC$_AUDIO General audio
DC$_REMCSL_
STORAGE
Remote console storage
DC$_MISC Miscellaneous
Note that the definition of a device as a real-time device (DC$_REALTIME)
is somewhat subjective; it implies no special treatment by the operating
system.
UCB$B_DEVTYPE Device type. The DPT of every driver should specify a symbolic constant
(defined by the $DCDEF macro) for this field. The driver-loading procedure
writes the field when it creates the UCB.
Drivers for devices with set mode and set characteristics functions can
rewrite the value in this field with data supplied in the characteristics
buffer, the address of which is passed in the I/O request.
UCB$W_DEVBUFSIZ Default buffer size. The DPT can specify a value for this field if relevant.
The driver-loading procedure writes the field when it creates the UCB.
Drivers for devices with set mode and set characteristics functions can
rewrite the value in this field with data supplied in the characteristics
buffer, the address of which is passed in the I/O request. This field is used
by RMS for record I/O on nonfile devices.
UCB$Q_DEVDEPEND Device-descriptive data interpreted by the device driver itself. The DPT can
specify a value for this field. The driver-loading procedure writes this field
when it creates the UCB.
Drivers for devices with set mode and set characteristics functions can
rewrite the value in this field with data supplied in the characteristics
buffer, the address of which is passed in the I/O request.
UCB$Q_DEVDEPEND2 Second longword for device-dependent status. This field is an extension of
UCB$Q_DEVDEPEND.
UCB$L_IOQFL* Pending-I/O queue listhead forward link. The queue contains the addresses
of IRPs waiting for processing on a device. EXE$INSERTIRP inserts IRPs
into the pending-I/O queue when a device is busy. IOC$REQCOM dequeues
IRPs when the device is idle.
The queue is a priority queue that has the highest priority IRPs at the front
of the queue. Priority is determined by the base priority of the requesting
process. IRPs with the same priority are processed first-in/first-out.
UCB$L_IOQBL* Pending-I/O queue listhead backward link. EXE$INSERTIRP and
IOC$REQCOM modify the pending-I/O queue.
UCB$W_UNIT* Number of the physical device unit; stored as a binary value. The driver-
loading procedure writes a value into this field when it creates the UCB.
Drivers for multiunit controllers read this field during unit initialization to
identify a unit to the controller.
UCB$W_CHARGE* Mailbox byte count quota charge, if the device is a mailbox.
(continued on next page)
1–91