Specifications
Operating System Routines
IOC$REQXBIMAP
IOC$REQXBIMAP
Requests a set of XBI+ map registers, and if unavailable, places the requesting
fork process in the XBI+ map register wait queue.
Module
[IO_ROUTINES]IOSUBNPAG
Input
Location Contents
R5 Address of UCB
UCB$W_BCNT Transfer byte count (IOC$ALOXBIMAP only)
UCB$W_BOFF Byte offset in page (IOC$ALOXBIMAP only)
UCB$L_CRB Address of CRB
CRB$L_INTD+
VEC$L_ADP
Address of device ADP
ADP$L_BIMASTER Address of XBI+ adapter ADP
Output
Location Contents
R0 Status of operation
R1 Unpredictable
R2 Address of ADP
CRB$L_INTD+
VEC$W_XBINUMREG
Number of XBI+ map registers allocated
CRB$L_INTD+
VEC$W_MAPREG
Starting XBI+ map register number
Synchronization
Callers of IOC$REQXBIMAP must be executing at fork IPL or above. No specific
spinlock is required. The routine returns control to its caller at the caller’s IPL.
The caller retains any spinlocks it held at the time of the call.
Description
IOC$REQXBIMAP allocates a contiguous set of XBI+ map registers and records
the allocation in the ADP and CRB. It calculates the number of needed map
registers using the values contained in UCB$W_BCNT and UCB$W_BOFF. If
an odd number of map registers is required, the value is rounded up to an even
multiple of 64.
3–139