Specifications

Data Structures
1.2 Adapter Control Block (ADP)
Table 1–2 (Cont.) Contents of Adapter Control Block
Field Name Contents
UNIBUS Adapter Extension
ADP$L_MRACTMDRS* Number of active standard map register descriptors in arrays to
which ADP$W_MRNREGARY and ADP$W_MRFREGARY point.
IOC$REQMAPREG and IOC$RELMAPREG use these fields when allocating
and deallocating standard map registers.
ADP$W_DPBITMAP* Data path allocation bit map. IOC$REQDATAP and IOC$RELDATAP
read and write this field. The system adapter initialization routine sets
the bit map to show as available all the buffered data paths supported by
the UNIBUS adapter. (The adapter initialization routine for certain VAX
processors whose UNIBUS adapters or Q22–bus interfaces do not supply
buffered data paths marks three data paths as available. This facilitates
the writing of machine-independent code that can execute regardless of the
presence of buffered data paths.)
The state of each of the available buffered data paths (whether in use or
available) is recorded in the data path allocation bit map. One data path
corresponds to each bit in the field. If a bit is clear, the related data path is
currently allocated to a driver fork process.
ADP$W_MRNFENCE* Boundary marker for the array specified by ADP$W_MRNREGARY; contains
–1.
ADP$W_MRNREGARY* Standard map register ‘‘number of registers’’ array of 124 words. The
number of words, or cells, that are active in this array is contained in
ADP$L_MRACTMDRS. Each active cell gives the number of free standard
map registers. For each active cell in this array, there is a corresponding
first free map register number in the ‘‘first register’’ array (ADP$W_
MRFREGARY). Together, these values give the base map register and
number of free map registers for a block of free map registers. This
information is used to allocate and deallocate standard map registers.
ADP$W_MRFFENCE* Boundary marker for array specified by ADP$W_MRFREGARY; contains –1.
ADP$W_MRFREGARY* Standard map register ‘‘first register’’ array of 124 words. The number of
currently active cells in this array is contained in ADP$L_MRACTMDRS.
Each active cell gives a number of the first free map register within
a block of free map registers. For each active cell in this array, there
is a corresponding cell in the ‘‘number of registers’’ array (ADP$W_
MRNREGARY) that gives a number of free map registers. Together, these
values give the base map register and number of free map registers for
a block of free map registers. This information is used to allocate and
deallocate standard map registers.
ADP$W_UMR_DIS* Number of disabled standard map registers. During system initialization,
some standard map registers can be disabled so that their corresponding
UNIBUS and Q22–bus addresses can be accessed directly through UNIBUS-
space or Q22–bus-space physical addresses.
ADP$L_MR2QFL* Alternate-map-register wait queue’s forward link. IOC$ALOALTMAP,
IOC$REQALTMAP, and IOC$RELALTMAP read and write this field. When
a driver fork process requests a set of Q22–bus alternate map registers
and the set is not currently available, IOC$REQALTMAP saves driver
context in the device’s UCB fork block, inserts the fork block address in the
alternate-map-register wait queue, and suspends the driver fork process.
When another driver calls IOC$RELALTMAP to release a sufficient number
of map registers, the routine dequeues a UCB fork block from the alternate-
map-register wait queue, allocates the requested set of map registers to the
driver, and reactivates that driver fork process.
(continued on next page)
1–10