--******************************************************************************************************************** -- Created: 30-Mar-2010 17:01:50 by OpenVMS SDL EV3-3 -- Source: 17-FEB-2000 16:34:47 $1$DGA7274:[STARLET_ADA.LIS]IOSADEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package IOSADEF is -- module $IOSADEF --+ -- Define I/O Status Area --- IOSA_K_LENGTH : constant := 32; -- Length of IOSA IOSA_C_LENGTH : constant := 32; -- Length of IOSA IOSA_S_IOSADEF : constant := 32; -- Size of IOSA type IOSA_BCNT_32_TYPE is -- 32-bit byte count variant record IOSB_BCNT : UNSIGNED_LONGWORD; -- 32-bit byte count (unaligned) IOSB_DEV_DEPEND_HIGH : UNSIGNED_WORD; -- 16-bit device dependent info end record; for IOSA_BCNT_32_TYPE use record IOSB_BCNT at 0 range 0 .. 31; IOSB_DEV_DEPEND_HIGH at 4 range 0 .. 15; end record; for IOSA_BCNT_32_TYPE'SIZE use 48; IOSA_BCNT_32_TYPE_INIT : constant IOSA_BCNT_32_TYPE := (IOSB_BCNT => 0, IOSB_DEV_DEPEND_HIGH => 0); type IOSA_DEVDEPEND_TYPE is record IOSB_BCNT : UNSIGNED_WORD; -- 16-bit byte count IOSB_DEV_DEPEND : UNSIGNED_LONGWORD; -- 32-bit device dependent info ----Component(s) below are defined as comments since they ----overlap other fields ---- ----IOSB_PID : UNSIGNED_LONGWORD; -- 32-bit pid ----Component(s) below are defined as comments since they ----overlap other fields ---- ----BCNT_32 : IOSA_BCNT_32_TYPE; -- 32-bit byte count variant end record; for IOSA_DEVDEPEND_TYPE use record IOSB_BCNT at 0 range 0 .. 15; IOSB_DEV_DEPEND at 4 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----IOSB_PID at 4 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----BCNT_32 at 0 range 0 .. 47; end record; for IOSA_DEVDEPEND_TYPE'SIZE use 48; IOSA_DEVDEPEND_TYPE_INIT : constant IOSA_DEVDEPEND_TYPE := (IOSB_BCNT => 0, IOSB_DEV_DEPEND => 0 ); type IOSA_STATUSQ_TYPE is record STATUS : UNSIGNED_LONGWORD; -- Status RESD : UNSIGNED_LONGWORD; -- Reserved (driver) end record; for IOSA_STATUSQ_TYPE use record STATUS at 0 range 0 .. 31; RESD at 4 range 0 .. 31; end record; for IOSA_STATUSQ_TYPE'SIZE use 64; IOSA_STATUSQ_TYPE_INIT : constant IOSA_STATUSQ_TYPE := (STATUS => 0, RESD => 0); type IOSA_IOSB_OVERLAY_TYPE is record IOSB_STATUS : UNSIGNED_WORD; -- Final I/O status DEVDEPEND : IOSA_DEVDEPEND_TYPE; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----STATUSQ : IOSA_STATUSQ_TYPE; end record; for IOSA_IOSB_OVERLAY_TYPE use record IOSB_STATUS at 0 range 0 .. 15; DEVDEPEND at 2 range 0 .. 47; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----STATUSQ at 0 range 0 .. 63; end record; for IOSA_IOSB_OVERLAY_TYPE'SIZE use 64; IOSA_IOSB_OVERLAY_TYPE_INIT : constant IOSA_IOSB_OVERLAY_TYPE := (IOSB_STATUS => 0, DEVDEPEND => IOSA_DEVDEPEND_TYPE_INIT ); type IOSA_TYPE is record IOSB_OVERLAY : IOSA_IOSB_OVERLAY_TYPE; COUNT_Q : UNSIGNED_QUADWORD; -- Force size ----Component(s) below are defined as comments since they ----overlap other fields ---- ----COUNT : INTEGER_32; -- Number of bytes CONTEXT_Q : UNSIGNED_QUADWORD; -- Force size ----Component(s) below are defined as comments since they ----overlap other fields ---- ----CONTEXT_P : ADDRESS; -- User context area ----CONTEXT : INTEGER_32; -- User context area ----UPDSEC_NOWRT_VA : ADDRESS; -- First VA not written by $UPDSEC_64 RESL : UNSIGNED_LONGWORD_ARRAY (1 .. 2); -- in the future some ----Component(s) below are defined as comments since they ----overlap other fields ---- ----RESQ : INTEGER_32; -- additional space ----CONTEXT_ID : INTEGER_32; -- User context ID end record; for IOSA_TYPE use record IOSB_OVERLAY at 0 range 0 .. 63; COUNT_Q at 8 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----COUNT at 8 range 0 .. 31; CONTEXT_Q at 16 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----CONTEXT_P at 16 range 0 .. 31; ----CONTEXT at 16 range 0 .. 31; ----UPDSEC_NOWRT_VA at 16 range 0 .. 31; RESL at 24 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----RESQ at 24 range 0 .. 31; ----CONTEXT_ID at 24 range 0 .. 31; end record; for IOSA_TYPE'SIZE use 256; IOSA_TYPE_INIT : constant IOSA_TYPE := ( IOSB_OVERLAY => IOSA_IOSB_OVERLAY_TYPE_INIT, COUNT_Q => (0, 0), CONTEXT_Q => (0, 0), RESL => (others => 0) ); --+ -- $IO_SETUP flag bits --- FIO_M_EXPEDITE : constant := 16#00000001#; FIO_M_AST_NOFLOAT : constant := 16#00000002#; FIO_M_CTX : constant := 16#00000004#; type FIO_FLAGS_LONGWORD_TYPE is record EXPEDITE : BOOLEAN; -- Make this a high-priority I/O AST_NOFLOAT : BOOLEAN; -- The AST routine does not use f.p. regs CTX : BOOLEAN; -- Completion notification done via EFN$C_CTX FILLER_1 : UNSIGNED_29; end record; for FIO_FLAGS_LONGWORD_TYPE use record EXPEDITE at 0 range 0 .. 0; AST_NOFLOAT at 0 range 1 .. 1; CTX at 0 range 2 .. 2; FILLER_1 at 0 range 3 .. 31; end record; for FIO_FLAGS_LONGWORD_TYPE'SIZE use 32; FIO_FLAGS_LONGWORD_TYPE_INIT : constant FIO_FLAGS_LONGWORD_TYPE := (EXPEDITE => FALSE, AST_NOFLOAT => FALSE, CTX => FALSE, FILLER_1 => 0); end IOSADEF;