--******************************************************************************************************************** -- Created: 30-Mar-2010 17:32:58 by OpenVMS SDL EV3-3 -- Source: 16-MAR-2004 13:41:34 $1$DGA7274:[LIB_ADA.LIS]CWPSDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; with FKBDEF;use FKBDEF; package CWPSDEF is -- module $CWPSDEF --+ -- cwpssrv - Common service structure header -- -- All cwpsxxx$ packets contain the following header information. -- -- Fields marked with ++ must be filled/zeroed by service-specific -- routines (at least for pcntrl services) -- --- -- -- The CWPSSRV$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- CWPSSRV_M_BTX_DONE : constant := 16#00000001#; CWPSSRV_M_SEC_CLASS : constant := 16#00000001#; CWPSSRV_M_JPIBUF : constant := 16#00000002#; CWPSSRV_M_NOQUOTA : constant := 16#00000004#; CWPSSRV_M_GROUP_PRIV : constant := 16#00000008#; CWPSSRV_M_WORLD_PRIV : constant := 16#00000010#; CWPSSRV_M_SECAUDIT : constant := 16#00000020#; CWPSSRV_M_NOAUDIT : constant := 16#00000040#; CWPSSRV_M_OPER_PRIV : constant := 16#00000080#; CWPSSRV_K_RETRY_CNT : constant := 5; -- five retries is about -- 4½ seconds CWPSSRV_K_LENGTH : constant := 112; -- length of data structure common CWPSSRV_K_SRVCODE_BEGIN : constant := 0; -- - marker for beginning of codes CWPSSRV_K_CANWAK : constant := 1; -- $CANWAK service CWPSSRV_K_DELPRC : constant := 2; -- $DELPRC service CWPSSRV_K_FORCEX : constant := 3; -- $FORCEX service CWPSSRV_K_RESUME : constant := 4; -- $RESUME service CWPSSRV_K_SCHDWK : constant := 5; -- $SCHDWK service CWPSSRV_K_SETPRI : constant := 6; -- $SETPRI service CWPSSRV_K_SUSPND : constant := 7; -- $SUSPND service CWPSSRV_K_WAKE : constant := 8; -- $WAKE service CWPSSRV_K_SRVCODE_END : constant := 9; -- - marker for end of SRV codes -- CWPS subtypes for other services CWPSSRV_K_GETJPI : constant := 20; -- $GETJPI service CWPSSRV_K_CREPRC : constant := 21; -- $CREPRC service CWPSSRV_K_TERMIN : constant := 22; -- process termination message -- CWPS subtypes for security service codes CWPSSRV_K_GRANTID : constant := 28; -- $GRANTID service CWPSSRV_K_REVOKID : constant := 29; -- $WAKE service CWPSSRV_K_VERSION_1 : constant := 1; -- initial version CWPSSRV_K_VERSION_2 : constant := 2; CWPSSRV_K_VERSION_3 : constant := 3; CWPSSRV_K_VERSION_4 : constant := 4; CWPSSRV_K_VERSION_5 : constant := 5; CWPSSRV_K_VERSION_6 : constant := 6; CWPSSRV_K_VERSION_7 : constant := 7; CWPSSRV_K_VERSION_8 : constant := 8; CWPSSRV_K_VERSION_9 : constant := 9; CWPSSRV_K_VERSION_10 : constant := 10; CWPSSRV_K_VERSION_11 : constant := 11; CWPSSRV_K_VERSION_12 : constant := 12; CWPSSRV_K_INITIAL_MAJ_VERS : constant := 1; CWPSSRV_K_INITIAL_MIN_VERS : constant := 1; CWPSSRV_S_CWPSSRVDEF : constant := 112; type CWPSSRV_BTX_FLAGS_TYPE is -- state of block transfer record BTX_DONE : BOOLEAN; -- block transfer is complete FILLER_1 : UNSIGNED_7; end record; for CWPSSRV_BTX_FLAGS_TYPE use record BTX_DONE at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 7; end record; for CWPSSRV_BTX_FLAGS_TYPE'SIZE use 8; CWPSSRV_BTX_FLAGS_TYPE_INIT : constant CWPSSRV_BTX_FLAGS_TYPE := (BTX_DONE => FALSE, FILLER_1 => 0); type CWPSSRV_FILL_3_TYPE is record SEC_CLASS : BOOLEAN; -- sec class present... JPIBUF : BOOLEAN; -- jpi requests buffered NOQUOTA : BOOLEAN; -- quota has not been charged GROUP_PRIV : BOOLEAN; -- requestor running image with GROUP privilege WORLD_PRIV : BOOLEAN; -- requestor running image with WORLD privilege SECAUDIT : BOOLEAN; -- requestor running with mandatory process auditing NOAUDIT : BOOLEAN; -- requestor is part of TCB OPER_PRIV : BOOLEAN; -- requestor has OPER privilege end record; for CWPSSRV_FILL_3_TYPE use record SEC_CLASS at 0 range 0 .. 0; JPIBUF at 0 range 1 .. 1; NOQUOTA at 0 range 2 .. 2; GROUP_PRIV at 0 range 3 .. 3; WORLD_PRIV at 0 range 4 .. 4; SECAUDIT at 0 range 5 .. 5; NOAUDIT at 0 range 6 .. 6; OPER_PRIV at 0 range 7 .. 7; end record; for CWPSSRV_FILL_3_TYPE'SIZE use 8; CWPSSRV_FILL_3_TYPE_INIT : constant CWPSSRV_FILL_3_TYPE := (SEC_CLASS => FALSE, JPIBUF => FALSE, NOQUOTA => FALSE, GROUP_PRIV => FALSE, WORLD_PRIV => FALSE, SECAUDIT => FALSE, NOAUDIT => FALSE, OPER_PRIV => FALSE); type CWPSSRV_TYPE is record SEND_LENGTH : UNSIGNED_LONGWORD; -- length sent to partner RETURN_LENGTH : UNSIGNED_LONGWORD; -- length returned from partner SIZE : UNSIGNED_WORD; -- size of structure ++ TYP : UNSIGNED_BYTE; -- structure type code ++ SUBTYP : UNSIGNED_BYTE; -- structure subtype and service code ++ BTX_STATUS : UNSIGNED_WORD; -- status of block transfer request BTX_FLAGS : CWPSSRV_BTX_FLAGS_TYPE; -- state of block transfer FUNC : UNSIGNED_BYTE; -- CLSMSG request function code SRV_MAJ_VERS : UNSIGNED_WORD; -- incompatible version formats SRV_MIN_VERS : UNSIGNED_WORD; -- upwards compatible extensions EXT_MAJ_VERS : UNSIGNED_WORD; -- incompatible version formats EXT_MIN_VERS : UNSIGNED_WORD; -- upwards compatible extensions STATUS : UNSIGNED_LONGWORD; -- status from remote service BXFR_STATUS : UNSIGNED_LONGWORD; -- status from block transfer MAXIMUM_LENGTH : UNSIGNED_LONGWORD; -- maximum possible return length FLAGS : UNSIGNED_LONGWORD; -- longword of flags ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FILL_3 : CWPSSRV_FILL_3_TYPE; EXT_OFFSET : UNSIGNED_LONGWORD; -- offset to service-specific extension POST_ROUTINE : ADDRESS; -- address of post-processing routine ++ RQSTR_CSID : UNSIGNED_LONGWORD; -- CSID of the requestor's node RQSTR_PID : UNSIGNED_LONGWORD; -- IPID of the requestor RQSTR_EPID : UNSIGNED_LONGWORD; -- EPID of the requestor RQSTR_IMGCNT : UNSIGNED_LONGWORD; -- image count of requestor RQSTR_RIGHTSLEN : UNSIGNED_LONGWORD; -- length of process rights info RQSTR_RIGHTSOFF : UNSIGNED_LONGWORD; -- offset to start of rights info RQSTR_PIDADR : ADDRESS; -- original pid address from user PARTNER_CSID : UNSIGNED_LONGWORD; -- CSID of the partner node SOUGHT_EPID : UNSIGNED_LONGWORD; -- epid for target process RETURN_EPID : UNSIGNED_LONGWORD; -- actual epid from target process PRCNAMLEN : UNSIGNED_WORD; -- length of target process name PRCNAMOFF : UNSIGNED_WORD; -- offset to start of target process name FREE_OFFSET : UNSIGNED_LONGWORD; -- offset to free data area SPARE1 : UNSIGNED_LONGWORD; -- zero if unused SPARE2 : UNSIGNED_WORD; -- zero if unused SPARE3 : UNSIGNED_BYTE; -- zero if unused RETRIES_LEFT : UNSIGNED_BYTE; -- number of retries remaining TIME : UNSIGNED_QUADWORD; -- time structure allocated end record; for CWPSSRV_TYPE use record SEND_LENGTH at 0 range 0 .. 31; RETURN_LENGTH at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; SUBTYP at 11 range 0 .. 7; BTX_STATUS at 12 range 0 .. 15; BTX_FLAGS at 14 range 0 .. 7; FUNC at 15 range 0 .. 7; SRV_MAJ_VERS at 16 range 0 .. 15; SRV_MIN_VERS at 18 range 0 .. 15; EXT_MAJ_VERS at 20 range 0 .. 15; EXT_MIN_VERS at 22 range 0 .. 15; STATUS at 24 range 0 .. 31; BXFR_STATUS at 28 range 0 .. 31; MAXIMUM_LENGTH at 32 range 0 .. 31; FLAGS at 36 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FILL_3 at 36 range 0 .. 7; EXT_OFFSET at 40 range 0 .. 31; POST_ROUTINE at 44 range 0 .. 31; RQSTR_CSID at 48 range 0 .. 31; RQSTR_PID at 52 range 0 .. 31; RQSTR_EPID at 56 range 0 .. 31; RQSTR_IMGCNT at 60 range 0 .. 31; RQSTR_RIGHTSLEN at 64 range 0 .. 31; RQSTR_RIGHTSOFF at 68 range 0 .. 31; RQSTR_PIDADR at 72 range 0 .. 31; PARTNER_CSID at 76 range 0 .. 31; SOUGHT_EPID at 80 range 0 .. 31; RETURN_EPID at 84 range 0 .. 31; PRCNAMLEN at 88 range 0 .. 15; PRCNAMOFF at 90 range 0 .. 15; FREE_OFFSET at 92 range 0 .. 31; SPARE1 at 96 range 0 .. 31; SPARE2 at 100 range 0 .. 15; SPARE3 at 102 range 0 .. 7; RETRIES_LEFT at 103 range 0 .. 7; TIME at 104 range 0 .. 63; end record; for CWPSSRV_TYPE'SIZE use 896; CWPSSRV_TYPE_INIT : constant CWPSSRV_TYPE := (SEND_LENGTH => 0, RETURN_LENGTH => 0, SIZE => 0, TYP => 0, SUBTYP => 0, BTX_STATUS => 0, BTX_FLAGS => CWPSSRV_BTX_FLAGS_TYPE_INIT, FUNC => 0, SRV_MAJ_VERS => 0, SRV_MIN_VERS => 0, EXT_MAJ_VERS => 0, EXT_MIN_VERS => 0, STATUS => 0, BXFR_STATUS => 0, MAXIMUM_LENGTH => 0, FLAGS => 0, EXT_OFFSET => 0, POST_ROUTINE => ADDRESS_ZERO, RQSTR_CSID => 0, RQSTR_PID => 0, RQSTR_EPID => 0, RQSTR_IMGCNT => 0, RQSTR_RIGHTSLEN => 0, RQSTR_RIGHTSOFF => 0, RQSTR_PIDADR => ADDRESS_ZERO, PARTNER_CSID => 0, SOUGHT_EPID => 0, RETURN_EPID => 0, PRCNAMLEN => 0, PRCNAMOFF => 0, FREE_OFFSET => 0, SPARE1 => 0, SPARE2 => 0, SPARE3 => 0, RETRIES_LEFT => 0, TIME => (0, 0)); CWPS_ENABLED : constant := 1; -- assemble the code CWPS_NERVOUS : constant := 0; -- do reasonable checking CWPS_SCARED : constant := 0; -- do a lot of consistency checking CWPS_PARANOID : constant := 0; -- do excessive checking CWPS_STATISTICS : constant := 1; -- collect statistics CWPSCAN_K_LENGTH : constant := 0; -- length of $CANWAK CWPSRES_K_LENGTH : constant := 0; -- length of $RESUME CWPSSUS_K_LENGTH : constant := 0; -- length of $SUSPND CWPSWAK_K_LENGTH : constant := 0; -- length of $WAKE -- -- The CWPSDEL$ structure is exchanged with remote nodes. Any updates -- to this structure must take mixed-version operation into account. -- Sender stores delprc flags argument (longword) in flags extension. CWPSDEL_K_LENGTH : constant := 4; -- length of data structure CWPSDEL_S_CWPSDELDEF : constant := 4; -- Old size name - synonym type CWPSDEL_TYPE is record FLAGS : UNSIGNED_LONGWORD; -- flags to pass to remote end record; for CWPSDEL_TYPE use record FLAGS at 0 range 0 .. 31; end record; for CWPSDEL_TYPE'SIZE use 32; CWPSDEL_TYPE_INIT : constant CWPSDEL_TYPE := (FLAGS => 0); CWPSSRV_K_DELPRC_EXT_MIN_VERS : constant := 2; -- -- The CWPSFEX$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- CWPSFEX_K_LENGTH : constant := 4; -- length of data structure CWPSFEX_S_CWPSFEXDEF : constant := 4; -- Old size name - synonym type CWPSFEX_TYPE is record CODE : UNSIGNED_LONGWORD; -- code to pass to remote end record; for CWPSFEX_TYPE use record CODE at 0 range 0 .. 31; end record; for CWPSFEX_TYPE'SIZE use 32; CWPSFEX_TYPE_INIT : constant CWPSFEX_TYPE := (CODE => 0); -- Version # of 6-cell SETPRI extension CWPSSRV_K_SETPRI_MIN_VERS2 : constant := 2; -- -- The CWPSPRI$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- CWPSPRI_K_LENGTH : constant := 24; -- length of data structure CWPSPRI_S_CWPSPRIDEF : constant := 24; -- Old size name - synonym type CWPSPRI_TYPE is record USER_PRVPRI : ADDRESS; -- address of user's prvpri cell PRI : UNSIGNED_LONGWORD; -- priority we send to remote PRVPRI : UNSIGNED_LONGWORD; -- priority we receive from remote USER_PRVPOL : ADDRESS; -- address of user's prvpol cell POL : UNSIGNED_LONGWORD; -- policy we send to remote (or -1) PRVPOL : UNSIGNED_LONGWORD; -- prev policy we receive from remote end record; for CWPSPRI_TYPE use record USER_PRVPRI at 0 range 0 .. 31; PRI at 4 range 0 .. 31; PRVPRI at 8 range 0 .. 31; USER_PRVPOL at 12 range 0 .. 31; POL at 16 range 0 .. 31; PRVPOL at 20 range 0 .. 31; end record; for CWPSPRI_TYPE'SIZE use 192; CWPSPRI_TYPE_INIT : constant CWPSPRI_TYPE := (USER_PRVPRI => ADDRESS_ZERO, PRI => 0, PRVPRI => 0, USER_PRVPOL => ADDRESS_ZERO, POL => 0, PRVPOL => 0); -- -- The CWPSSWK$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- CWPSSWK_K_LENGTH : constant := 16; -- length of data structure CWPSSWK_S_CWPSSWKDEF : constant := 16; -- Old size name - synonym type CWPSSWK_TYPE is record DAYTIM : UNSIGNED_QUADWORD; -- time to wake up REPTIM : UNSIGNED_QUADWORD; -- time to repeat wake up end record; for CWPSSWK_TYPE use record DAYTIM at 0 range 0 .. 63; REPTIM at 8 range 0 .. 63; end record; for CWPSSWK_TYPE'SIZE use 128; CWPSSWK_TYPE_INIT : constant CWPSSWK_TYPE := (DAYTIM => (0, 0), REPTIM => (0, 0)); -- -- The CWPSJPI$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- CWPSJPI_K_LENGTH : constant := 60; -- length of data structure CWPSJPI_S_CWPSJPIDEF : constant := 60; -- Old size name - synonym type CWPSJPI_TYPE is record PSCAN_OFF : UNSIGNED_LONGWORD; -- offset to start of pscanctx ITMOFF : UNSIGNED_LONGWORD; -- offset to item list in structure BUFOFF : UNSIGNED_LONGWORD; -- offset to return buffer VECOFF : UNSIGNED_LONGWORD; -- offset to vector for item addr ACBOFF : UNSIGNED_LONGWORD; -- offset to acb structure ITMLST : ADDRESS; -- address of original item list BUFLEN : UNSIGNED_LONGWORD; -- length of user's buffers IOSBADR : ADDRESS; -- user's I/O status address IOSB : UNSIGNED_QUADWORD; -- return iosb contents ASTADR : ADDRESS; -- AST address ASTPRM : UNSIGNED_LONGWORD; -- AST parameter PSCANCTX_ADDR : ADDRESS; -- PSCANCTX record address PSCAN_SEQNUM : UNSIGNED_WORD; -- sequence number of PSCANCTX EFN : UNSIGNED_BYTE; -- event flag to set ACMODE : UNSIGNED_BYTE; -- access mode of original call CTLFLAGS : UNSIGNED_WORD; -- JPI$_GETJPI_CONTROL_FLAGS bits SPARE0 : UNSIGNED_WORD; -- spare, align end record; for CWPSJPI_TYPE use record PSCAN_OFF at 0 range 0 .. 31; ITMOFF at 4 range 0 .. 31; BUFOFF at 8 range 0 .. 31; VECOFF at 12 range 0 .. 31; ACBOFF at 16 range 0 .. 31; ITMLST at 20 range 0 .. 31; BUFLEN at 24 range 0 .. 31; IOSBADR at 28 range 0 .. 31; IOSB at 32 range 0 .. 63; ASTADR at 40 range 0 .. 31; ASTPRM at 44 range 0 .. 31; PSCANCTX_ADDR at 48 range 0 .. 31; PSCAN_SEQNUM at 52 range 0 .. 15; EFN at 54 range 0 .. 7; ACMODE at 55 range 0 .. 7; CTLFLAGS at 56 range 0 .. 15; SPARE0 at 58 range 0 .. 15; end record; for CWPSJPI_TYPE'SIZE use 480; CWPSJPI_TYPE_INIT : constant CWPSJPI_TYPE := (PSCAN_OFF => 0, ITMOFF => 0, BUFOFF => 0, VECOFF => 0, ACBOFF => 0, ITMLST => ADDRESS_ZERO, BUFLEN => 0, IOSBADR => ADDRESS_ZERO, IOSB => (0, 0), ASTADR => ADDRESS_ZERO, ASTPRM => 0, PSCANCTX_ADDR => ADDRESS_ZERO, PSCAN_SEQNUM => 0, EFN => 0, ACMODE => 0, CTLFLAGS => 0, SPARE0 => 0); CWPSJPI_64_K_LENGTH : constant := 40; -- length of data structure type CWPSJPI_64_TYPE is record RQSTR_PIDADR : UNSIGNED_QUADWORD; -- user's address for PID argument: cwpssrv$l_rqstr_pid for $GETJPI will be - ITMLST : UNSIGNED_QUADWORD; -- user's item list address: cwpsjpi$l_itmlst for $GETJPI will be -1. IOSBADR : UNSIGNED_QUADWORD; -- user's IOSB address: cwpsjpi$l_iosbadr for $GETJPI will be -1. ASTADR : UNSIGNED_QUADWORD; -- user's AST address: cwpsjpi$l_astadr will be -1. ASTPRM : UNSIGNED_QUADWORD; -- user's AST parameter: cwpsjpi$l_astprm will be -1. end record; for CWPSJPI_64_TYPE use record RQSTR_PIDADR at 0 range 0 .. 63; ITMLST at 8 range 0 .. 63; IOSBADR at 16 range 0 .. 63; ASTADR at 24 range 0 .. 63; ASTPRM at 32 range 0 .. 63; end record; for CWPSJPI_64_TYPE'SIZE use 320; CWPSJPI_64_TYPE_INIT : constant CWPSJPI_64_TYPE := (RQSTR_PIDADR => (0, 0), ITMLST => (0, 0), IOSBADR => (0, 0), ASTADR => (0, 0), ASTPRM => (0, 0)); -- -- The CWPSCRE$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- CWPSCRE_M_IMGDMP : constant := 16#00000001#; CWPSCRE_M_DEBUG : constant := 16#00000002#; CWPSCRE_M_DBGTRU : constant := 16#00000004#; CWPSCRE_M_PARSE_EXTENDED : constant := 16#00000008#; CWPSCRE_M_CASE_SENSITIVE : constant := 16#00000010#; CWPSCRE_K_LENGTH : constant := 2100; -- length of data structure CWPSCRE_S_CWPSCREDEF : constant := 2100; -- Old size name - synonym type CWPSCRE_FLAGS_TYPE is -- Miscellaneous flags for PQB record IMGDMP : BOOLEAN; -- TAKE IMAGE DUMP ON SERIOUS ERROR DEBUG : BOOLEAN; -- /DEBUG startup desired DBGTRU : BOOLEAN; -- debugger present PARSE_EXTENDED : BOOLEAN; -- Use PARSE_STYLE = EXTENDED CASE_SENSITIVE : BOOLEAN; -- Use CASE_LOOKUP = SENSITIVE FILLER_1 : UNSIGNED_27; end record; for CWPSCRE_FLAGS_TYPE use record IMGDMP at 0 range 0 .. 0; DEBUG at 0 range 1 .. 1; DBGTRU at 0 range 2 .. 2; PARSE_EXTENDED at 0 range 3 .. 3; CASE_SENSITIVE at 0 range 4 .. 4; FILLER_1 at 0 range 5 .. 31; end record; for CWPSCRE_FLAGS_TYPE'SIZE use 32; CWPSCRE_FLAGS_TYPE_INIT : constant CWPSCRE_FLAGS_TYPE := (IMGDMP => FALSE, DEBUG => FALSE, DBGTRU => FALSE, PARSE_EXTENDED => FALSE, CASE_SENSITIVE => FALSE, FILLER_1 => 0); type CWPSCRE_MIN_CLASS_TYPE is -- MINIMUM AUTHORIZED SECURITY CLEARANCE record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 20); end record; for CWPSCRE_MIN_CLASS_TYPE use record FILLER_1 at 0 range 0 .. 159; end record; for CWPSCRE_MIN_CLASS_TYPE'SIZE use 160; CWPSCRE_MIN_CLASS_TYPE_INIT : constant CWPSCRE_MIN_CLASS_TYPE := (FILLER_1 => (others => 0)); type CWPSCRE_MAX_CLASS_TYPE is -- MAXIMUM AUTHORIZED SECURITY CLEARANCE record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 20); end record; for CWPSCRE_MAX_CLASS_TYPE use record FILLER_1 at 0 range 0 .. 159; end record; for CWPSCRE_MAX_CLASS_TYPE'SIZE use 160; CWPSCRE_MAX_CLASS_TYPE_INIT : constant CWPSCRE_MAX_CLASS_TYPE := (FILLER_1 => (others => 0)); type CWPSCREPRC_TYPE is record BASE_OFFSET : UNSIGNED_LONGWORD; -- Offset of CWPSCRE from CWPSSRV base ACBOFF : UNSIGNED_LONGWORD; -- Offset of embedded ACB from CWPSCRE PRVMSK : UNSIGNED_QUADWORD; -- Privileges of new process IOSB : UNSIGNED_QUADWORD; -- Transaction status block PRIORITY : UNSIGNED_LONGWORD; -- Priority of new process UIC : UNSIGNED_LONGWORD; -- UIC of new process DEFPROT : UNSIGNED_LONGWORD; -- Default protection of new process TMBU : UNSIGNED_LONGWORD; -- Termination MB unit number of creator SPARE1 : UNSIGNED_LONGWORD; -- zero if unused SPARE2 : UNSIGNED_LONGWORD; -- zero if unused MAXJOBS : UNSIGNED_WORD; -- Maximum jobs limit MAXDETACH : UNSIGNED_WORD; -- Maximum detached jobs limit ASTLM : UNSIGNED_LONGWORD; -- AST LIMIT BIOLM : UNSIGNED_LONGWORD; -- BUFFERED I/O LIMIT BYTLM : UNSIGNED_LONGWORD; -- BUFFERED I/O LIMIT CPULM : UNSIGNED_LONGWORD; -- CPU TIME LIMIT DIOLM : UNSIGNED_LONGWORD; -- DIRECT I/O LIMIT FILLM : UNSIGNED_LONGWORD; -- OPEN FILE LIMIT PGFLQUOTA : UNSIGNED_LONGWORD; -- PAGING FILE QUOTA PRCLM : UNSIGNED_LONGWORD; -- SUB-PROCESS LIMIT TQELM : UNSIGNED_LONGWORD; -- TIMER QUEUE ENTRY LIMIT WSQUOTA : UNSIGNED_LONGWORD; -- WORKING SET QUOTA WSDEFAULT : UNSIGNED_LONGWORD; -- WORKING SET DEFAULT ENQLM : UNSIGNED_LONGWORD; -- ENQUEUE LIMIT WSEXTENT : UNSIGNED_LONGWORD; -- MAXIMUM WORKING SET SIZE JTQUOTA : UNSIGNED_LONGWORD; -- JOB-WIDE LOGICAL NAME TABLE CREATION QUOTA SPARE_QUOTA1 : UNSIGNED_LONGWORD; -- Spare field in case a new quota is added SPARE_QUOTA2 : UNSIGNED_LONGWORD; -- Spare field in case a new quota is added INPUT_ATT : UNSIGNED_LONGWORD; -- SYS$INPUT attributes OUTPUT_ATT : UNSIGNED_LONGWORD; -- SYS$OUTPUT attributes ERROR_ATT : UNSIGNED_LONGWORD; -- SYS$ERROR attributes MSGMASK : UNSIGNED_LONGWORD; -- MESSAGE FLAGS UAF_FLAGS : UNSIGNED_LONGWORD; -- FLAGS FROM UAF RECORD CREPRC_FLAGS : UNSIGNED_LONGWORD; -- Copy of $CREPRC status flags FLAGS : CWPSCRE_FLAGS_TYPE; -- Miscellaneous flags for PQB INPUT : STRING(1 .. 256); -- LOGICAL NAME FOR INPUT OUTPUT : STRING(1 .. 256); -- LOGICAL NAME FOR OUTPUT ERROR : STRING(1 .. 256); -- LOGICAL NAME FOR ERROR OUTPUT DISK : STRING(1 .. 256); -- LOGICAL NAME FOR SYS$DISK IMAGE : STRING(1 .. 256); -- IMAGE NAME FOR NEW PROCESS DDSTRING : STRING(1 .. 256); -- DEFAULT DIRECTORY STRING USERNAME : STRING(1 .. 12); -- User name of new process for JIB ACCOUNT : STRING(1 .. 8); -- Account name of new process for JIB PQB_ACCOUNT : STRING(1 .. 8); -- Account name for new process for PQB MIN_CLASS : CWPSCRE_MIN_CLASS_TYPE; -- MINIMUM AUTHORIZED SECURITY CLEARANCE MAX_CLASS : CWPSCRE_MAX_CLASS_TYPE; -- MAXIMUM AUTHORIZED SECURITY CLEARANCE CLI_NAME : STRING(1 .. 32); -- CLI name CLI_TABLE : STRING(1 .. 32); -- CLI table name SPAWN_CLI : STRING(1 .. 32); -- Spawn CLI name SPAWN_TABLE : STRING(1 .. 256); -- Spawn CLI table name end record; for CWPSCREPRC_TYPE use record BASE_OFFSET at 0 range 0 .. 31; ACBOFF at 4 range 0 .. 31; PRVMSK at 8 range 0 .. 63; IOSB at 16 range 0 .. 63; PRIORITY at 24 range 0 .. 31; UIC at 28 range 0 .. 31; DEFPROT at 32 range 0 .. 31; TMBU at 36 range 0 .. 31; SPARE1 at 40 range 0 .. 31; SPARE2 at 44 range 0 .. 31; MAXJOBS at 48 range 0 .. 15; MAXDETACH at 50 range 0 .. 15; ASTLM at 52 range 0 .. 31; BIOLM at 56 range 0 .. 31; BYTLM at 60 range 0 .. 31; CPULM at 64 range 0 .. 31; DIOLM at 68 range 0 .. 31; FILLM at 72 range 0 .. 31; PGFLQUOTA at 76 range 0 .. 31; PRCLM at 80 range 0 .. 31; TQELM at 84 range 0 .. 31; WSQUOTA at 88 range 0 .. 31; WSDEFAULT at 92 range 0 .. 31; ENQLM at 96 range 0 .. 31; WSEXTENT at 100 range 0 .. 31; JTQUOTA at 104 range 0 .. 31; SPARE_QUOTA1 at 108 range 0 .. 31; SPARE_QUOTA2 at 112 range 0 .. 31; INPUT_ATT at 116 range 0 .. 31; OUTPUT_ATT at 120 range 0 .. 31; ERROR_ATT at 124 range 0 .. 31; MSGMASK at 128 range 0 .. 31; UAF_FLAGS at 132 range 0 .. 31; CREPRC_FLAGS at 136 range 0 .. 31; FLAGS at 140 range 0 .. 31; INPUT at 144 range 0 .. 2047; OUTPUT at 400 range 0 .. 2047; ERROR at 656 range 0 .. 2047; DISK at 912 range 0 .. 2047; IMAGE at 1168 range 0 .. 2047; DDSTRING at 1424 range 0 .. 2047; USERNAME at 1680 range 0 .. 95; ACCOUNT at 1692 range 0 .. 63; PQB_ACCOUNT at 1700 range 0 .. 63; MIN_CLASS at 1708 range 0 .. 159; MAX_CLASS at 1728 range 0 .. 159; CLI_NAME at 1748 range 0 .. 255; CLI_TABLE at 1780 range 0 .. 255; SPAWN_CLI at 1812 range 0 .. 255; SPAWN_TABLE at 1844 range 0 .. 2047; end record; for CWPSCREPRC_TYPE'SIZE use 16800; CWPSCREPRC_TYPE_INIT : constant CWPSCREPRC_TYPE := (BASE_OFFSET => 0, ACBOFF => 0, PRVMSK => (0, 0), IOSB => (0, 0), PRIORITY => 0, UIC => 0, DEFPROT => 0, TMBU => 0, SPARE1 => 0, SPARE2 => 0, MAXJOBS => 0, MAXDETACH => 0, ASTLM => 0, BIOLM => 0, BYTLM => 0, CPULM => 0, DIOLM => 0, FILLM => 0, PGFLQUOTA => 0, PRCLM => 0, TQELM => 0, WSQUOTA => 0, WSDEFAULT => 0, ENQLM => 0, WSEXTENT => 0, JTQUOTA => 0, SPARE_QUOTA1 => 0, SPARE_QUOTA2 => 0, INPUT_ATT => 0, OUTPUT_ATT => 0, ERROR_ATT => 0, MSGMASK => 0, UAF_FLAGS => 0, CREPRC_FLAGS => 0, FLAGS => CWPSCRE_FLAGS_TYPE_INIT, INPUT => (others => ASCII.NUL), OUTPUT => (others => ASCII.NUL), ERROR => (others => ASCII.NUL), DISK => (others => ASCII.NUL), IMAGE => (others => ASCII.NUL), DDSTRING => (others => ASCII.NUL), USERNAME => (others => ASCII.NUL), ACCOUNT => (others => ASCII.NUL), PQB_ACCOUNT => (others => ASCII.NUL), MIN_CLASS => CWPSCRE_MIN_CLASS_TYPE_INIT, MAX_CLASS => CWPSCRE_MAX_CLASS_TYPE_INIT, CLI_NAME => (others => ASCII.NUL), CLI_TABLE => (others => ASCII.NUL), SPAWN_CLI => (others => ASCII.NUL), SPAWN_TABLE => (others => ASCII.NUL)); -- -- The CWPSTERM$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- CWPSTERM_K_LENGTH : constant := 108; -- length of data structure CWPSTERM_S_CWPSTERMDEF : constant := 108; -- Old size name - synonym type CWPSTERM_TYPE is record BASE_OFFSET : UNSIGNED_LONGWORD; -- Offset of CWPSTERM from CWPSSRV base ACBOFF : UNSIGNED_LONGWORD; -- Offset of embedded ACB from CWPSTERM IOSB : UNSIGNED_QUADWORD; -- Transaction status block DELETED_PROC_EPID : UNSIGNED_LONGWORD; -- EPID of process whose termination message this is SPARE : UNSIGNED_LONGWORD; -- Spare field TERM_MSG : STRING(1 .. 84); -- termination message end record; for CWPSTERM_TYPE use record BASE_OFFSET at 0 range 0 .. 31; ACBOFF at 4 range 0 .. 31; IOSB at 8 range 0 .. 63; DELETED_PROC_EPID at 16 range 0 .. 31; SPARE at 20 range 0 .. 31; TERM_MSG at 24 range 0 .. 671; end record; for CWPSTERM_TYPE'SIZE use 864; CWPSTERM_TYPE_INIT : constant CWPSTERM_TYPE := (BASE_OFFSET => 0, ACBOFF => 0, IOSB => (0, 0), DELETED_PROC_EPID => 0, SPARE => 0, TERM_MSG => (others => ASCII.NUL)); -- -- The CWPSVEC$ structure is a local structure. If modified, you do not need -- to take mixed-version operation into account, however you must be sure that -- all modules and images which reference the structure are updated together. -- Code that utilizes this structure assumes it resides at a quadword-aligned -- VA. The structure must always contain an integral number of quadwords. -- CWPSVEC_M_64_BIT_ILE : constant := 16#00000001#; CWPSVEC_K_LENGTH : constant := 24; -- length of data structure CWPSVEC_S_CWPSVECDEF : constant := 24; -- Old size name - synonym type CWPSVEC_FLAGS_TYPE is record CWPSVEC_64_BIT_ILE : BOOLEAN; FILLER_1 : UNSIGNED_31; end record; for CWPSVEC_FLAGS_TYPE use record CWPSVEC_64_BIT_ILE at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 31; end record; for CWPSVEC_FLAGS_TYPE'SIZE use 32; CWPSVEC_FLAGS_TYPE_INIT : constant CWPSVEC_FLAGS_TYPE := (CWPSVEC_64_BIT_ILE => FALSE, FILLER_1 => 0); type CWPSVEC_TYPE is record USR_BUFADR : UNSIGNED_QUADWORD; -- user's address for buffer items USR_LENADR : UNSIGNED_QUADWORD; -- user's address for returned length FLAGS : CWPSVEC_FLAGS_TYPE; FILLER_1 : UNSIGNED_LONGWORD; -- Keep structure QW-aligned end record; for CWPSVEC_TYPE use record USR_BUFADR at 0 range 0 .. 63; USR_LENADR at 8 range 0 .. 63; FLAGS at 16 range 0 .. 31; FILLER_1 at 20 range 0 .. 31; end record; for CWPSVEC_TYPE'SIZE use 192; CWPSVEC_TYPE_INIT : constant CWPSVEC_TYPE := (USR_BUFADR => (0, 0), USR_LENADR => (0, 0), FLAGS => CWPSVEC_FLAGS_TYPE_INIT, FILLER_1 => 0); -- -- The CWPSACB$ structure is a local structure. If modified, you do not need -- to take mixed-version operation into account, however you must be sure that -- all modules and images which reference the structure are updated together. -- CWPSACB_K_ACB_LENGTH : constant := 36; -- length of embedded block CWPSACB_K_LENGTH : constant := 92; -- length of data structure (less PCB) CWPSACB_S_CWPSACBDEF : constant := 97; -- Old size name - synonym type CWPSACB_FILL_12_TYPE is record ASTQFL : ADDRESS; -- ast queue forward link ASTQBL : ADDRESS; -- ast queue backward link SIZE : UNSIGNED_WORD; -- structure size in bytes TYP : UNSIGNED_BYTE; -- structure type code RMOD : UNSIGNED_BYTE; -- request access mode PID : UNSIGNED_LONGWORD; -- process id of request AST : ADDRESS; -- ast routine address ASTPRM : UNSIGNED_LONGWORD; -- ast parameter FILLER_1 : UNSIGNED_LONGWORD_ARRAY (1 .. 2); KAST : ADDRESS; -- internal kernel mode xfer address end record; for CWPSACB_FILL_12_TYPE use record ASTQFL at 0 range 0 .. 31; ASTQBL at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; RMOD at 11 range 0 .. 7; PID at 12 range 0 .. 31; AST at 16 range 0 .. 31; ASTPRM at 20 range 0 .. 31; FILLER_1 at 24 range 0 .. 63; KAST at 32 range 0 .. 31; end record; for CWPSACB_FILL_12_TYPE'SIZE use 288; CWPSACB_FILL_12_TYPE_INIT : constant CWPSACB_FILL_12_TYPE := (ASTQFL => ADDRESS_ZERO, ASTQBL => ADDRESS_ZERO, SIZE => 0, TYP => 0, RMOD => 0, PID => 0, AST => ADDRESS_ZERO, ASTPRM => 0, FILLER_1 => (others => 0), KAST => ADDRESS_ZERO); type CWPSACB_FILL_11_TYPE is record CWPSACB_FKB : INTEGER_8_ARRAY (1 .. 48); ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FILL_12 : CWPSACB_FILL_12_TYPE; end record; for CWPSACB_FILL_11_TYPE use record CWPSACB_FKB at 0 range 0 .. 383; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FILL_12 at 0 range 0 .. 287; end record; for CWPSACB_FILL_11_TYPE'SIZE use 384; CWPSACB_FILL_11_TYPE_INIT : constant CWPSACB_FILL_11_TYPE := (CWPSACB_FKB => (others => 0)); type CWPSACB_TYPE is record FILL_11 : CWPSACB_FILL_11_TYPE; BUFADR : ADDRESS; -- address of buffer BUFLEN : UNSIGNED_LONGWORD; -- length of the buffer MSGBUF : ADDRESS; -- message buffer address CSB : ADDRESS; -- csb address CDRP : ADDRESS; -- cdrp address READ_LENGTH : UNSIGNED_LONGWORD; -- length of bxfr read request WRITE_LENGTH : UNSIGNED_LONGWORD; -- length of bxfr write request RIGHTSDESC : UNSIGNED_LONGWORD_ARRAY (1 .. 2); -- descriptor for rightslist FUNC : UNSIGNED_BYTE; -- function code from message SPARE0 : UNSIGNED_BYTE; SPARE1 : UNSIGNED_WORD; REMOTE_PSB : ADDRESS; -- address of remote process security profile -- trojan PCB should be octaword aligned FILLER_1 : UNSIGNED_BYTE_ARRAY (0 .. 3); TROJAN_PCB : UNSIGNED_BYTE; -- start of false PCB end record; for CWPSACB_TYPE use record FILL_11 at 0 range 0 .. 383; BUFADR at 48 range 0 .. 31; BUFLEN at 52 range 0 .. 31; MSGBUF at 56 range 0 .. 31; CSB at 60 range 0 .. 31; CDRP at 64 range 0 .. 31; READ_LENGTH at 68 range 0 .. 31; WRITE_LENGTH at 72 range 0 .. 31; RIGHTSDESC at 76 range 0 .. 63; FUNC at 84 range 0 .. 7; SPARE0 at 85 range 0 .. 7; SPARE1 at 86 range 0 .. 15; REMOTE_PSB at 88 range 0 .. 31; FILLER_1 at 92 range 0 .. 31; TROJAN_PCB at 96 range 0 .. 7; end record; for CWPSACB_TYPE'SIZE use 776; CWPSACB_TYPE_INIT : constant CWPSACB_TYPE := ( FILL_11 => CWPSACB_FILL_11_TYPE_INIT, BUFADR => ADDRESS_ZERO, BUFLEN => 0, MSGBUF => ADDRESS_ZERO, CSB => ADDRESS_ZERO, CDRP => ADDRESS_ZERO, READ_LENGTH => 0, WRITE_LENGTH => 0, RIGHTSDESC => (others => 0), FUNC => 0, SPARE0 => 0, SPARE1 => 0, REMOTE_PSB => ADDRESS_ZERO, FILLER_1 => (others => 0), TROJAN_PCB => 0); -- -- The CWPSSQH$ structure is a local structure. If modified, you do not need -- to take mixed-version operation into account, however you must be sure that -- all modules and images which reference the structure are updated together. -- CWPSSQH_K_LENGTH : constant := 32; -- length of data structure CWPSSQH_S_CWPSSQHDEF : constant := 32; -- Old size name - synonym type CWPSSQH_TYPE is record FLINK : ADDRESS; -- forward link BLINK : ADDRESS; -- back link SIZE : UNSIGNED_WORD; -- size of structure (SQH only) TYP : UNSIGNED_BYTE; -- structure type code SUBTYP : UNSIGNED_BYTE; -- structure subtype ALLOC_LENGTH : UNSIGNED_LONGWORD; -- actual length of allocation MPID : UNSIGNED_LONGWORD; -- master pid SPARE0 : UNSIGNED_LONGWORD; -- enough to make it octaword SPARE1 : UNSIGNED_LONGWORD; -- aligned... SPARE3 : UNSIGNED_LONGWORD; end record; for CWPSSQH_TYPE use record FLINK at 0 range 0 .. 31; BLINK at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; SUBTYP at 11 range 0 .. 7; ALLOC_LENGTH at 12 range 0 .. 31; MPID at 16 range 0 .. 31; SPARE0 at 20 range 0 .. 31; SPARE1 at 24 range 0 .. 31; SPARE3 at 28 range 0 .. 31; end record; for CWPSSQH_TYPE'SIZE use 256; CWPSSQH_TYPE_INIT : constant CWPSSQH_TYPE := (FLINK => ADDRESS_ZERO, BLINK => ADDRESS_ZERO, SIZE => 0, TYP => 0, SUBTYP => 0, ALLOC_LENGTH => 0, MPID => 0, SPARE0 => 0, SPARE1 => 0, SPARE3 => 0); -- -- The CWPSNODI*$ structures are local structures. If modified, you do not need -- to take mixed-version operation into account, however you must be sure that -- all modules and images which reference the structures are updated together. -- CWPSNODIH_K_HEADER : constant := 16; -- length of data structure CWPSNODIH_S_CWPSNODIHDEF : constant := 17; -- Old size name - synonym type CWPSNODIH_TYPE is record FLINK : ADDRESS; -- forward link BLINK : ADDRESS; -- back link SIZE : UNSIGNED_WORD; -- size of structure TYP : UNSIGNED_BYTE; -- structure type code SUBTYP : UNSIGNED_BYTE; -- structure subtype COUNT : UNSIGNED_LONGWORD; -- count of nodes NODE_LIST : UNSIGNED_BYTE; -- start of list of node blocks end record; for CWPSNODIH_TYPE use record FLINK at 0 range 0 .. 31; BLINK at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; SUBTYP at 11 range 0 .. 7; COUNT at 12 range 0 .. 31; NODE_LIST at 16 range 0 .. 7; end record; for CWPSNODIH_TYPE'SIZE use 136; CWPSNODIH_TYPE_INIT : constant CWPSNODIH_TYPE := (FLINK => ADDRESS_ZERO, BLINK => ADDRESS_ZERO, SIZE => 0, TYP => 0, SUBTYP => 0, COUNT => 0, NODE_LIST => 0); CWPSNODI_K_LENGTH : constant := 32; -- length of data structure CWPSNODI_S_CWPSNODIDEF : constant := 32; -- Old size name - synonym type CWPSNODI_TYPE is record HWTYPE : UNSIGNED_LONGWORD; -- hardware type (and flink) HW_MODEL : UNSIGNED_WORD; -- integer model code FILLER_1 : UNSIGNED_WORD; -- spare CSID : UNSIGNED_LONGWORD; -- node's csid NAME : UNSIGNED_BYTE_ARRAY (1 .. 16); -- node's name (ASCIC) SB : ADDRESS; -- sb address end record; for CWPSNODI_TYPE use record HWTYPE at 0 range 0 .. 31; HW_MODEL at 4 range 0 .. 15; FILLER_1 at 6 range 0 .. 15; CSID at 8 range 0 .. 31; NAME at 12 range 0 .. 127; SB at 28 range 0 .. 31; end record; for CWPSNODI_TYPE'SIZE use 256; CWPSNODI_TYPE_INIT : constant CWPSNODI_TYPE := (HWTYPE => 0, HW_MODEL => 0, FILLER_1 => 0, CSID => 0, NAME => (others => 0), SB => ADDRESS_ZERO); end CWPSDEF;