Specifications
Data Structures
1.19 Unit Control Block (UCB)
Table 1–22 (Cont.) Contents of Unit Control Block
Field Name Contents
UCB$L_ORB* Address of ORB associated with the UCB. SYSGEN places the address in
this field when you use SYSGEN’s CONNECT command.
UCB$L_LOCKID* Lock management lock ID of device allocation lock. A lock management lock
is used for device allocation so that device allocation functions properly for
cluster-accessible devices in a VAXcluster (DEV$V_CLU set within UCB$L_
DEVCHAR2).
UCB$L_CRB* Address of primary CRB associated with the device. The driver-loading
procedure writes this field after it creates the associated CRB. Driver fork
processes read this field to gain access to device registers. System routines
use UCB$L_CRB to locate interrupt-dispatching code and the addresses of
driver unit and controller initialization routines.
UCB$L_DLCK* Address of device lock that—in a multiprocessing environment—synchronizes
access to device registers and those fields in the UCB accessed at device IPL.
The driver-loading routine copies the address of the device lock in the
CRB (CRB$L_DLCK) to this field as it creates a UCB for each device on a
controller.
UCB$L_DDB* Address of DDB associated with device. The driver-loading procedure writes
this field when the procedure creates the associated UCB. System routines
generally read the DDB field in order to locate device driver entry points, the
address of a driver FDT, or the ACP associated with a given device.
UCB$L_PID* Process identification number of the process that has allocated the device.
Written by the $ALLOC system service.
UCB$L_LINK* Address of next UCB in the chain of UCBs attached to a single controller
and associated with a DDB. The driver-loading procedure writes this field
when the procedure adds the next UCB. Any system routine that examines
the status of all devices on the system reads this field. Such routines include
EXE$TIMEOUT, IOC$SEARCHDEV, and power failure recovery routines.
UCB$L_VCB* Address of volume control block (VCB) that describes the volume mounted
on the device. This field is written by the device’s ACP and read by
EXE$QIOACPPKT, ACPs, and the XQP.
UCB$L_DEVCHAR First longword of device characteristics bits. The DPT of every driver
should specify symbolic constant values (defined by the $DEVDEF macro in
SYS$LIBRARY:STARLET.MLB) for this field. The driver-loading procedure
writes the field when the procedure creates the UCB. The $QIO system
service reads the field to determine whether a device is spooled, file
structured, shared, has a volume mounted, and so on.
The system defines the following device characteristics:
DEV$V_REC Record-oriented device
DEV$V_CCL Carriage control device
DEV$V_TRM Terminal device
DEV$V_DIR Directory-structured device
DEV$V_SDI Single directory-structured device
DEV$V_SQD Sequential block-oriented device (magnetic tape, for
example)
DEV$V_SPL Device spooled
(continued on next page)
1–88