All direct call commands are issued by the device managers (OS2DASD.DMD and OS2SCSI.DMD) or filter device drivers to an adapter device driver's registered entry point, with a global pointer to the Input/Output Request Block (IORB), as follows:
C Language Syntax
──────────────────────────────────────────────────────────────────────────
#include <iorb.h> VOID (FAR * ADDEntryPoint) (piorb); PIORB piorb; /* Far pointer to the IORB control block */
──────────────────────────────────────────────────────────────────────────
Assembly Language Syntax
──────────────────────────────────────────────────────────────────────────
#include <iorb.inc> ; ** ES:BX = IORB Pointer PUSH es ; IORB Segment PUSH bx ; IORB Offset CALL dword ptr AddEntryPoint ; Call adapter device driver ADD sp, 4 ; Clean-up stack
──────────────────────────────────────────────────────────────────────────
Results
The results of the command are returned in the IORB.
The following table categorizes and lists the direct call commands used for the DASD and SCSI device manager interface:
┌────────────────────────┬────────────────────────────────────┐ │Command Type │Commands │ ├────────────────────────┼────────────────────────────────────┤ │CONFIGURATION │ │ │ │GET_DEVICE_TABLE │ │ │COMPLETE_INIT │ ├────────────────────────┼────────────────────────────────────┤ │UNIT_CONTROL │ │ │ │ALLOCATE_UNIT │ │ │DEALLOCATE_UNIT │ │ │CHANGE_UNITINFO │ ├────────────────────────┼────────────────────────────────────┤ │GEOMETRY │ │ │ │GET_MEDIA_GEOMETRY │ │ │SET_MEDIA_GEOMETRY │ │ │GET_DEVICE_GEOMETRY │ │ │SET_LOGICAL_GEOMETRY │ ├────────────────────────┼────────────────────────────────────┤ │EXECUTE_IO │ │ │ │READ │ │ │READ_VERIFY │ │ │READ_PREFETCH │ │ │WRITE │ │ │WRITE_VERIFY │ ├────────────────────────┼────────────────────────────────────┤ │FORMAT │ │ │ │FORMAT_MEDIA │ │ │FORMAT_TRACK │ │ │FORMAT_PROGRESS │ ├────────────────────────┼────────────────────────────────────┤ │UNIT_STATUS │ │ │ │GET_UNIT_STATUS │ │ │CHANGELINE_STATE │ │ │GET_MEDIA_SENSE │ │ │GET_LOCK_STATUS │ ├────────────────────────┼────────────────────────────────────┤ │DEVICE_CONTROL │ │ │ │ABORT │ │ │RESET │ │ │SUSPEND │ │ │RESUME │ │ │LOCK_MEDIA │ │ │UNLOCK_MEDIA │ │ │EJECT_MEDIA │ ├────────────────────────┼────────────────────────────────────┤ │ADAPTER_PASSTHRU │ │ │ │EXECUTE_SCB │ │ │EXECUTE_CDB │ └────────────────────────┴────────────────────────────────────┘
DevHlp services introduced with the OS/2 2.0 operating system to support this strategy include: