-- --**************************************************************************** --* * --* Copyright (c) 2001 * --* by DIGITAL Equipment Corporation, Maynard, Mass. * --* * --* This software is furnished under a license and may be used and copied * --* only in accordance with the terms of such license and with the * --* inclusion of the above copyright notice. This software or any other * --* copies thereof may not be provided or otherwise made available to any * --* other person. No title to and ownership of the software is hereby * --* transferred. * --* * --* The information in this software is subject to change without notice * --* and should not be construed as a commitment by DIGITAL Equipment * --* Corporation. * --* * --* DIGITAL assumes no responsibility for the use or reliability of its * --* software on equipment which is not supplied by DIGITAL. * --* * --**************************************************************************** --******************************************************************************************************************** -- Created: 15-MAR-2001 22:50:55 by OpenVMS SDL EV1-33 -- Source: 3-SEP-1997 15:36:31 $11$DUA933:[LIB_ADA.LIS]CWPSDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; 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; 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 CWPSSRVDEF_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 : UNSIGNED_LONGWORD; -- 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 CWPSSRVDEF_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 CWPSSRVDEF_TYPE'SIZE use 896; CWPSSRVDEF_TYPE_INIT : constant CWPSSRVDEF_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 => 0, 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 CWPSDEL_K_LENGTH : constant := 0; -- length of $DELPRC 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 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 type CWPSFEXDEF_TYPE is record CODE : UNSIGNED_LONGWORD; -- code to pass to remote end record; for CWPSFEXDEF_TYPE use record CODE at 0 range 0 .. 31; end record; for CWPSFEXDEF_TYPE'SIZE use 32; CWPSFEXDEF_TYPE_INIT : constant CWPSFEXDEF_TYPE := (CODE => 0); -- -- The CWPSPRI$ structure is exchanged with remote nodes. Any updates to this -- structure must take mixed-version operation into account. -- CWPSPRI_K_LENGTH : constant := 12; -- length of data structure type CWPSPRIDEF_TYPE is record USER_PRVPRI : UNSIGNED_LONGWORD; -- address of user's cell PRI : UNSIGNED_LONGWORD; -- priority we send to remote PRVPRI : UNSIGNED_LONGWORD; -- priority we receive from remote end record; for CWPSPRIDEF_TYPE use record USER_PRVPRI at 0 range 0 .. 31; PRI at 4 range 0 .. 31; PRVPRI at 8 range 0 .. 31; end record; for CWPSPRIDEF_TYPE'SIZE use 96; CWPSPRIDEF_TYPE_INIT : constant CWPSPRIDEF_TYPE := (USER_PRVPRI => 0, PRI => 0, PRVPRI => 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 type CWPSSWKDEF_TYPE is record DAYTIM : UNSIGNED_QUADWORD; -- time to wake up REPTIM : UNSIGNED_QUADWORD; -- time to repeat wake up end record; for CWPSSWKDEF_TYPE use record DAYTIM at 0 range 0 .. 63; REPTIM at 8 range 0 .. 63; end record; for CWPSSWKDEF_TYPE'SIZE use 128; CWPSSWKDEF_TYPE_INIT : constant CWPSSWKDEF_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 type CWPSJPIDEF_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 : UNSIGNED_LONGWORD; -- address of original item list BUFLEN : UNSIGNED_LONGWORD; -- length of user's buffers IOSBADR : UNSIGNED_LONGWORD; -- user's I/O status address IOSB : UNSIGNED_QUADWORD; -- return iosb contents ASTADR : UNSIGNED_LONGWORD; -- AST address ASTPRM : UNSIGNED_LONGWORD; -- AST parameter PSCANCTX_ADDR : UNSIGNED_LONGWORD; -- 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 CWPSJPIDEF_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 CWPSJPIDEF_TYPE'SIZE use 480; CWPSJPIDEF_TYPE_INIT : constant CWPSJPIDEF_TYPE := (PSCAN_OFF => 0, ITMOFF => 0, BUFOFF => 0, VECOFF => 0, ACBOFF => 0, ITMLST => 0, BUFLEN => 0, IOSBADR => 0, IOSB => (0, 0), ASTADR => 0, ASTPRM => 0, PSCANCTX_ADDR => 0, PSCAN_SEQNUM => 0, EFN => 0, ACMODE => 0, CTLFLAGS => 0, SPARE0 => 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_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 FILLER_1 : UNSIGNED_29; 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; FILLER_1 at 0 range 3 .. 31; end record; for CWPSCRE_FLAGS_TYPE'SIZE use 32; CWPSCRE_FLAGS_TYPE_INIT : constant CWPSCRE_FLAGS_TYPE := (IMGDMP => FALSE, DEBUG => FALSE, DBGTRU => 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 -- -- 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. -- 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)); CWPSVEC_K_LENGTH : constant := 8; -- length of data structure type CWPSVECDEF_TYPE is record USR_BUFADR : UNSIGNED_LONGWORD; -- user's address for buffer items USR_LENADR : UNSIGNED_LONGWORD; -- user's address for returned length end record; for CWPSVECDEF_TYPE use record USR_BUFADR at 0 range 0 .. 31; USR_LENADR at 4 range 0 .. 31; end record; for CWPSVECDEF_TYPE'SIZE use 64; CWPSVECDEF_TYPE_INIT : constant CWPSVECDEF_TYPE := (USR_BUFADR => 0, USR_LENADR => 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 := 28; -- length of embedded block CWPSACB_K_LENGTH : constant := 80; -- length of data structure (less PCB) type CWPSACBDEF_TYPE is record ASTQFL : UNSIGNED_LONGWORD; -- ast queue forward link ASTQBL : UNSIGNED_LONGWORD; -- 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 : UNSIGNED_LONGWORD; -- ast routine address ASTPRM : UNSIGNED_LONGWORD; -- ast parameter KAST : UNSIGNED_LONGWORD; -- internal kernel mode xfer address BUFADR : UNSIGNED_LONGWORD; -- address of buffer BUFLEN : UNSIGNED_LONGWORD; -- length of the buffer MSGBUF : UNSIGNED_LONGWORD; -- message buffer address CSB : UNSIGNED_LONGWORD; -- csb address CDRP : UNSIGNED_LONGWORD; -- 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; SPARE2 : UNSIGNED_LONGWORD; -- trojan PCB should be octaword SPARE3 : UNSIGNED_LONGWORD; -- aligned SPARE4 : UNSIGNED_LONGWORD; TROJAN_PCB : UNSIGNED_BYTE; -- start of false PCB end record; for CWPSACBDEF_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; KAST at 24 range 0 .. 31; BUFADR at 28 range 0 .. 31; BUFLEN at 32 range 0 .. 31; MSGBUF at 36 range 0 .. 31; CSB at 40 range 0 .. 31; CDRP at 44 range 0 .. 31; READ_LENGTH at 48 range 0 .. 31; WRITE_LENGTH at 52 range 0 .. 31; RIGHTSDESC at 56 range 0 .. 63; FUNC at 64 range 0 .. 7; SPARE0 at 65 range 0 .. 7; SPARE1 at 66 range 0 .. 15; SPARE2 at 68 range 0 .. 31; SPARE3 at 72 range 0 .. 31; SPARE4 at 76 range 0 .. 31; TROJAN_PCB at 80 range 0 .. 7; end record; for CWPSACBDEF_TYPE'SIZE use 648; CWPSACBDEF_TYPE_INIT : constant CWPSACBDEF_TYPE := (ASTQFL => 0, ASTQBL => 0, SIZE => 0, TYP => 0, RMOD => 0, PID => 0, AST => 0, ASTPRM => 0, KAST => 0, BUFADR => 0, BUFLEN => 0, MSGBUF => 0, CSB => 0, CDRP => 0, READ_LENGTH => 0, WRITE_LENGTH => 0, RIGHTSDESC => (others => 0), FUNC => 0, SPARE0 => 0, SPARE1 => 0, SPARE2 => 0, SPARE3 => 0, SPARE4 => 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 type CWPSSQHDEF_TYPE is record FLINK : UNSIGNED_LONGWORD; -- forward link BLINK : UNSIGNED_LONGWORD; -- 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 CWPSSQHDEF_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 CWPSSQHDEF_TYPE'SIZE use 256; CWPSSQHDEF_TYPE_INIT : constant CWPSSQHDEF_TYPE := (FLINK => 0, BLINK => 0, 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 type CWPSNODIHDEF_TYPE is record FLINK : UNSIGNED_LONGWORD; -- forward link BLINK : UNSIGNED_LONGWORD; -- 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 CWPSNODIHDEF_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 CWPSNODIHDEF_TYPE'SIZE use 136; CWPSNODIHDEF_TYPE_INIT : constant CWPSNODIHDEF_TYPE := (FLINK => 0, BLINK => 0, SIZE => 0, TYP => 0, SUBTYP => 0, COUNT => 0, NODE_LIST => 0); CWPSNODI_K_LENGTH : constant := 32; -- length of data structure type CWPSNODIDEF_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 : UNSIGNED_LONGWORD; -- sb address end record; for CWPSNODIDEF_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 CWPSNODIDEF_TYPE'SIZE use 256; CWPSNODIDEF_TYPE_INIT : constant CWPSNODIDEF_TYPE := (HWTYPE => 0, HW_MODEL => 0, FILLER_1 => 0, CSID => 0, NAME => (others => 0), SB => 0); end CWPSDEF;