CONTENTS Title Page Copyright Page Preface 1 Data Structures 1.1 Configuration Control Block (ACF) 1.2 Adapter Control Block (ADP) 1.3 Channel Control Block (CCB) 1.4 Per-CPU Database (CPU) 1.5 Channel Request Block (CRB) 1.5.1 Interrupt Transfer Vector Block (VEC) 1.6 Device Data Block (DDB) 1.7 Driver Dispatch Table (DDT) 1.8 Driver Prologue Table (DPT) 1.9 Interrupt Dispatch Block (IDB) 1.10 I/O Request Packet (IRP) 1.11 I/O Request Packet Extension (IRPE) 1.12 Object Rights Block (ORB) 1.13 SCSI Class Driver Request Packet (SCDRP) 1.14 SCSI Connection Descriptor Table (SCDT) 1.15 SCSI Port Descriptor Table (SPDT) 1.16 Spin Lock Data Structure (SPL) 1.17 Unit Control Block (UCB) 2 VMS Macros Invoked by Drivers ADPDISP BI_NODE_RESET CASE CLASS_CTRL_INIT CLASS_UNIT_INIT CPUDISP DDTAB $DEF $DEFEND $DEFINI DEVICELOCK DEVICEUNLOCK DPTAB DPT_STORE DSBINT ENBINT $EQULST FIND_CPU_DATA FORK FORKLOCK FORKUNLOCK FUNCTAB IFNORD, IFNOWRT, IFRD, IFWRT INVALIDATE_TB IOFORK LOADALT LOADMBA LOADUBA LOCK LOCK_SYSTEM_PAGES PURDPR READ_SYSTIME RELALT RELCHAN RELDPR RELMPR RELSCHAN REQALT REQCOM REQDPR REQMPR REQPCHAN REQSCHAN SAVIPL SETIPL SOFTINT SPI$ABORT_COMMAND SPI$ALLOCATE_COMMAND_BUFFER SPI$CONNECT SPI$DEALLOCATE_COMMAND_BUFFER SPI$DISCONNECT SPI$FINISH_COMMAND SPI$GET_CONNECTION_CHAR SPI$MAP_BUFFER SPI$RECEIVE_BYTES SPI$RELEASE_BUS SPI$RESET SPI$SEND_BYTES SPI$SEND_COMMAND SPI$SENSE_PHASE SPI$SET_CONNECTION_CHAR SPI$SET_PHASE SPI$UNMAP_BUFFER SWAPLONG SWAPWORD TIMEDWAIT TIMEWAIT UNLOCK UNLOCK_SYSTEM_PAGES $VEC $VECEND $VECINI $VIELD, _VIELD WFIKPCH, WFIRLCH 3 Operating System Routines COM$DELATTNAST COM$DRVDEALMEM COM$FLUSHATTNS COM$POST, COM$POST_NOCNT COM$SETATTNAST ERL$DEVICERR, ERL$DEVICTMO, ERL$DEVICEATTN EXE$ABORTIO EXE$ALLOCBUF, EXE$ALLOCIRP EXE$ALONONPAGED EXE$ALONPAGVAR EXE$ALOPHYCNTG EXE$ALTQUEPKT EXE$CREDIT_BYTCNT, EXE$CREDIT_BYTCNT_BYTLM EXE$DEANONPAGED, EXE$DEANONPGDSIZ EXE$DEBIT_BYTCNT(_NW), EXE$DEBIT_BYTCNT_BYTLM(_NW) EXE$DEBIT_BYTCNT_ALO, EXE$DEBIT_BYTCNT_BYTLM_ALO EXE$FINISHIO, EXE$FINISHIOC EXE$FORK EXE$INSERTIRP EXE$INSIOQ, EXE$INSIOQC EXE$INSTIMQ EXE$IOFORK EXE$MODIFY EXE$MODIFYLOCK, EXE$MODIFYLOCKR EXE$ONEPARM EXE$QIODRVPKT EXE$QIORETURN EXE$READ EXE$READCHK, EXE$READCHKR EXE$READLOCK, EXE$READLOCKR EXE$RMVTIMQ EXE$SENSEMODE EXE$SETCHAR, EXE$SETMODE EXE$SNDEVMSG EXE$WRITE EXE$WRITECHK, EXE$WRITECHKR EXE$WRITELOCK, EXE$WRITELOCKR EXE$WRTMAILBOX EXE$ZEROPARM IOC$ALOALTMAP, IOC$ALOALTMAPN, IOC$ALOALTMAPSP IOC$ALOUBAMAP, IOC$ALOUBAMAPN IOC$ALOVMEMAP_DMA, IOC$ALOVMEMAP_DMAN IOC$ALOVMEMAP_PIO IOC$APPLYECC IOC$CANCELIO IOC$DIAGBUFILL IOC$INITIATE IOC$IOPOST IOC$LOADALTMAP IOC$LOADMBAMAP IOC$LOADUBAMAP, IOC$LOADUBAMAPA IOC$LOADVMEMAP_DMA, IOC$LOADVMEMAP_DMAN IOC$LOADVMEMAP_PIO IOC$MOVFRUSER, IOC$MOVFRUSER2 IOC$MOVTOUSER, IOC$MOVTOUSER2 IOC$PURGDATAP IOC$RELALTMAP IOC$RELCHAN IOC$RELDATAP IOC$RELMAPREG IOC$RELSCHAN IOC$RELVMEMAP_DMA, IOC$RELVMEMAP_DMAN IOC$RELVMEMAP_PIO IOC$REQALTMAP IOC$REQCOM IOC$REQDATAP, IOC$REQDATAPNW IOC$REQMAPREG IOC$REQPCHANH, IOC$REQPCHANL, IOC$REQSCHANH, IOC$REQSCHANL IOC$REQPCHANH, IOC$REQPCHANL, IOC$RETURN IOC$VERIFYCHAN IOC$VME_BYTE_SWAP_LONG IOC$VME_BYTE_SWAP_WORD IOC$WFIKPCH, IOC$WFIRLCH LDR$ALLOC_PT LDR$DEALLOC_PT MMG$UNLOCK SMP$ACQNOIPL SMP$ACQUIRE SMP$ACQUIREL SMP$RELEASE SMP$RELEASEL SMP$RESTORE SMP$RESTOREL 4 Device Driver Entry Points Alternate Start-I/O Routine Cancel-I/O Routine Cloned UCB Routine Controller Initialization Routine Driver Unloading Routine FDT Routines Interrupt Service Routine Register Dumping Routine Start-I/O Routine Timeout Handling Routine Unit Delivery Routine Unit Initialization Routine Unsolicited Interrupt Service Routine FIGURES 1-1 The I/O Database 1-2 Configuration Control Block (ACF) 1-3 Adapter Control Block (ADP) 1-4 Channel Control Block (CCB) 1-5 Per-CPU Database (CPU) 1-6 Channel Request Block (CRB) 1-7 Interrupt Transfer Vector Block (VEC) 1-8 Device Data Block (DDB) 1-9 Driver Dispatch Table (DDT) 1-10 Driver Prologue Table (DPT) 1-11 Interrupt Dispatch Block (IDB) 1-12 I/O Request Packet (IRP) 1-13 I/O Request Packet Extension (IRPE) 1-14 Object Rights Block (ORB) 1-15 SCSI Class Driver Request Packet (SCDRP) 1-16 SCSI Connection Descriptor Table (SCDT) 1-17 SCSI Port Descriptor Table (SPDT) 1-18 Spin Lock Data Structure (SPL) 1-19 Composition of Extended Unit Control Blocks 1-20 Unit Control Block (UCB) 1-21 UCB Error-Log Extension 1-22 UCB Local Tape Extension 1-23 UCB Local Disk Extension 1-24 UCB Terminal Extension 2-1 SCSI Bus Phase Longword Returned to SPI$SENSE_PHASE 2-2 SCSI Bus Phase Longword Supplied to SPI$SET_PHASE 3-1 VME Map Register Descriptor (VME_MD) TABLES 1-1 Contents of Configuration Control Block 1-2 Contents of Adapter Control Block 1-3 Contents of Channel Control Block 1-4 Contents of Per-CPU Database 1-5 Contents of Channel Request Block 1-6 Contents of Interrupt Transfer Vector Block (VEC) 1-7 Contents of Device Data Block 1-8 Contents of Driver Dispatch Table 1-9 Contents of Driver Prologue Table 1-10 Contents of Interrupt Dispatch Block 1-11 Contents of an I/O Request Packet 1-12 Contents of the I/O Request Packet Extension 1-13 Contents of Object Rights Block 1-14 Contents of SCSI Class Driver Request Packet 1-15 Contents of SCSI Connection Descriptor Table 1-16 Contents of SCSI Port Descriptor Table 1-17 Contents of the Spin Lock Data Structure 1-18 UCB Extensions and Sizes Defined in $UCBDEF 1-19 Contents of Unit Control Block 1-20 UCB Error-Log Extension 1-21 UCB Local Tape Extension 1-22 UCB Local Disk Extension 1-23 UCB Terminal Extension 2-1 Selectable Adapter Characteristics 2-2 VAX Systems and Their CPU Type 2-3 VAX Systems and Their CPU Subtype 2-4 Values Returned by the SPI$CONNECT Macro 2-5 SPI$GET_CONNECTION Macro Buffer Characteristics 2-6 Inputs with the SPI$MAP_BUFFER Macro 2-7 SPI$MAP_BUFFER Macro Return Values to the Class Driver 2-8 Inputs with the SPI$SEND_COMMAND Macro 2-9 SPI$SEND_COMMAND Macro Return Values 2-10 SPI$SET_CONNECTION_CHAR Macro Settable Characteristics 4-1 Last FDT Routine Exit Mechanisms