!*** MODULE $SECDEF *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN ! + ! PROCESS OR GLOBAL SECTION DEFINITIONS ! - ! ! ***** L_VBN, L_WINDOW, and L_PFC must be the same offset values as the ! ***** equivalently named offsets in $PFLDEF. ! PARAMETER SEC$M_GBL = '00000001'X PARAMETER SEC$M_CRF = '00000002'X PARAMETER SEC$M_DZRO = '00000004'X PARAMETER SEC$M_WRT = '00000008'X PARAMETER SEC$M_SHMGS = '00000010'X PARAMETER SEC$M_ARGS64 = '00000020'X PARAMETER SEC$M_WRTMOD = '000000C0'X PARAMETER SEC$M_AMOD = '00000300'X PARAMETER SEC$M_UNCACHED = '00000400'X PARAMETER SEC$M_READ_ONLY_SHPT = '00000800'X PARAMETER SEC$M_SHARED_PTS = '00001000'X PARAMETER SEC$M_MRES = '00002000'X PARAMETER SEC$M_PERM = '00004000'X PARAMETER SEC$M_SYSGBL = '00008000'X PARAMETER SEC$M_PFNMAP = '00010000'X PARAMETER SEC$M_EXPREG = '00020000'X PARAMETER SEC$M_PROTECT = '00040000'X PARAMETER SEC$M_PAGFIL = '00080000'X PARAMETER SEC$M_EXECUTE = '00100000'X PARAMETER SEC$M_NOPROTCHK = '00200000'X PARAMETER SEC$M_NO_OVERMAP = '00400000'X PARAMETER SEC$M_INPROG = '00800000'X PARAMETER SEC$M_PARANOID = '01000000'X PARAMETER SEC$M_GRANHINT = '02000000'X PARAMETER SEC$M_MRES_ALLOC = '04000000'X PARAMETER SEC$M_RAD_HINT = '08000000'X STRUCTURE /SECDEF/ UNION MAP INTEGER*4 SEC$L_GSD ! GLOBAL SECTION DESCRIPTOR ADDRESS END MAP MAP INTEGER*4 SEC$L_CCB ! CHANNEL CONTROL BLOCK ADDRESS IF PROCESS SECTION END MAP END UNION INTEGER*4 SEC$L_SECXFL ! SECTION INDEX FORWARD LINK INTEGER*4 SEC$L_SECXBL ! SECTION INDEX BACKWARD LINK INTEGER*4 SEC$L_PFC ! PFC - Page Fault Cluster UNION MAP INTEGER*4 SEC$Q_MRES_REFCNT(2) ! REFERENCE COUNT FOR MRES/SHMGS SECTIONS END MAP MAP UNION MAP INTEGER*4 SEC$L_VBN END MAP MAP INTEGER*4 SEC$Q_VBN(2) END MAP END UNION INTEGER*4 SEC$L_WINDOW ! WINDOW CONTROL BLOCK END MAP END UNION ! ! ***** NOTE ***** ! All flags in sec$l_flags must be kept in sync with flags in the ! SECFLG structure defined further in this module. ! **************** ! UNION MAP INTEGER*4 SEC$L_FLAGS ! VARIOUS CONTROL FLAGS IN LOW WORD END MAP MAP PARAMETER SEC$S_GBL = 1 PARAMETER SEC$V_GBL = 0 ! GLOBAL SECTION PARAMETER SEC$S_CRF = 1 PARAMETER SEC$V_CRF = 1 ! COPY ON REFERENCE PARAMETER SEC$S_DZRO = 1 PARAMETER SEC$V_DZRO = 2 ! DEMAND ZERO PARAMETER SEC$S_WRT = 1 PARAMETER SEC$V_WRT = 3 ! WRITABLE PARAMETER SEC$S_SHMGS = 1 PARAMETER SEC$V_SHMGS = 4 ! SHARED MEMORY GLOBAL SECTION PARAMETER SEC$S_ARGS64 = 1 PARAMETER SEC$V_ARGS64 = 5 ! Arguments passed as quads PARAMETER SEC$S_WRTMOD = 2 PARAMETER SEC$V_WRTMOD = 6 ! WRITE ACCESS MODE FOR SECTION PARAMETER SEC$S_AMOD = 2 PARAMETER SEC$V_AMOD = 8 ! ACCESS MODE OF SECTION PARAMETER SEC$S_UNCACHED = 1 PARAMETER SEC$V_UNCACHED = 10 ! PFN-map I/O space uncached. PARAMETER SEC$S_READ_ONLY_SHPT = 1 PARAMETER SEC$V_READ_ONLY_SHPT = 11 ! Shared page tables map section read-only PARAMETER SEC$S_SHARED_PTS = 1 PARAMETER SEC$V_SHARED_PTS = 12 ! Section is a shared PT section PARAMETER SEC$S_MRES = 1 PARAMETER SEC$V_MRES = 13 ! MEMORY RESIDENT SECTION PARAMETER SEC$S_PERM = 1 PARAMETER SEC$V_PERM = 14 ! PERMANENT SECTION PARAMETER SEC$S_SYSGBL = 1 PARAMETER SEC$V_SYSGBL = 15 ! 1 = SYSTEM GLOBAL, 0 = GROUP GLOBAL ! ! ***** THE FOLLOWING FLAGS ARE INDICATORS FOR PRIVATE AND GLOBAL SECTION ! ***** SYSTEM SERVICE REQUESTS AND ARE NOT STORED IN THE FLAGS LONGWORD ! ***** FIELD. ! PARAMETER SEC$S_PFNMAP = 1 PARAMETER SEC$V_PFNMAP = 16 ! MAP TO SPECIFIC PFN'S PARAMETER SEC$S_EXPREG = 1 PARAMETER SEC$V_EXPREG = 17 ! MAP INTO FIRST FREE ADDRESS SPACE PARAMETER SEC$S_PROTECT = 1 PARAMETER SEC$V_PROTECT = 18 ! CHECK WRITE ACCESS MODE (WRTMOD) PARAMETER SEC$S_PAGFIL = 1 PARAMETER SEC$V_PAGFIL = 19 ! GLOBAL SECTION HAS PAGE FILE BACKING STORE PARAMETER SEC$S_EXECUTE = 1 PARAMETER SEC$V_EXECUTE = 20 ! CHECK FOR EXECUTE ACCESS PARAMETER SEC$S_NOPROTCHK = 1 PARAMETER SEC$V_NOPROTCHK = 21 ! INHIBIT PROTECTION CHECK PARAMETER SEC$S_NO_OVERMAP = 1 PARAMETER SEC$V_NO_OVERMAP = 22 ! DON'T OVERMAP ADDRESS SPACE PARAMETER SEC$S_INPROG = 1 PARAMETER SEC$V_INPROG = 23 ! Section creation in progress PARAMETER SEC$S_PARANOID = 1 PARAMETER SEC$V_PARANOID = 24 ! Go into paranoia mode PARAMETER SEC$S_GRANHINT = 1 PARAMETER SEC$V_GRANHINT = 25 ! Allow enhanced GH regions PARAMETER SEC$S_MRES_ALLOC = 1 PARAMETER SEC$V_MRES_ALLOC = 26 ! Allocate memory resident pages during create PARAMETER SEC$S_RAD_HINT = 1 PARAMETER SEC$V_RAD_HINT = 27 ! Allocate pages based on RAD hint BYTE %FILL (4) END MAP END UNION INTEGER*4 SEC$L_REFCNT ! COUNT OF PTE'S REFERENCING THIS SECTION (unless MRES/SHMGS) ! ! UNIT_CNT contains the number of pagelets (512 byte units) in the section, except for ! PFN-mapped sections. In that case, UNIT_CNT contains the number of PFNs mapped by the section. ! INTEGER*4 SEC$L_VPX ! Starting virtual page index UNION MAP INTEGER*4 SEC$L_UNIT_CNT END MAP MAP INTEGER*4 SEC$Q_UNIT_CNT(2) END MAP END UNION END STRUCTURE ! SECDEF ! ! ***** NOTE THAT NUMBER OF LONG WORDS MUST BE EVEN ! PARAMETER SEC$K_LENGTH = '00000030'X ! SIZE OF PSTE/GSTE PARAMETER SEC$C_LENGTH = '00000030'X ! SIZE OF PSTE/GSTE ! ! ***** NOTE ***** ! All flags in the SECFLG structure must be kept in sync with flags in ! sec$l_flags defined in the SECDEF structure. ! **************** ! PARAMETER SECFLG$M_GBL = '00000001'X PARAMETER SECFLG$M_CRF = '00000002'X PARAMETER SECFLG$M_DZRO = '00000004'X PARAMETER SECFLG$M_WRT = '00000008'X PARAMETER SECFLG$M_SHMGS = '00000010'X PARAMETER SECFLG$M_ARGS64 = '00000020'X PARAMETER SECFLG$M_WRTMOD = '000000C0'X PARAMETER SECFLG$M_AMOD = '00000300'X PARAMETER SECFLG$M_UNCACHED = '00000400'X PARAMETER SECFLG$M_READ_ONLY_SHPT = '00000800'X PARAMETER SECFLG$M_SHARED_PTS = '00001000'X PARAMETER SECFLG$M_MRES = '00002000'X PARAMETER SECFLG$M_PERM = '00004000'X PARAMETER SECFLG$M_SYSGBL = '00008000'X PARAMETER SECFLG$M_PFNMAP = '00010000'X PARAMETER SECFLG$M_EXPREG = '00020000'X PARAMETER SECFLG$M_PROTECT = '00040000'X PARAMETER SECFLG$M_PAGFIL = '00080000'X PARAMETER SECFLG$M_EXECUTE = '00100000'X PARAMETER SECFLG$M_NOPROTCHK = '00200000'X PARAMETER SECFLG$M_NO_OVERMAP = '00400000'X PARAMETER SECFLG$M_INPROG = '00800000'X PARAMETER SECFLG$M_PARANOID = '01000000'X PARAMETER SECFLG$M_GRANHINT = '02000000'X PARAMETER SECFLG$M_MRES_ALLOC = '04000000'X PARAMETER SECFLG$M_RAD_HINT = '08000000'X STRUCTURE /SECDEF_FLAGS/ UNION MAP INTEGER*2 SECFLG$W_SAVED_FLAGS ! FLAGS SAVED IN SECTION TABLE ENTRY END MAP MAP INTEGER*4 SECFLG$L_FLAGS ! VARIOUS CONTROL FLAGS IN LOW WORD END MAP MAP PARAMETER SECFLG$S_GBL = 1 PARAMETER SECFLG$V_GBL = 0 ! GLOBAL SECTION PARAMETER SECFLG$S_CRF = 1 PARAMETER SECFLG$V_CRF = 1 ! COPY ON REFERENCE PARAMETER SECFLG$S_DZRO = 1 PARAMETER SECFLG$V_DZRO = 2 ! DEMAND ZERO PARAMETER SECFLG$S_WRT = 1 PARAMETER SECFLG$V_WRT = 3 ! WRITABLE PARAMETER SECFLG$S_SHMGS = 1 PARAMETER SECFLG$V_SHMGS = 4 ! SHARED MEMORY GLOBAL SECTION PARAMETER SECFLG$S_ARGS64 = 1 PARAMETER SECFLG$V_ARGS64 = 5 ! Arguments passed as quads PARAMETER SECFLG$S_WRTMOD = 2 PARAMETER SECFLG$V_WRTMOD = 6 ! WRITE ACCESS MODE FOR SECTION PARAMETER SECFLG$S_AMOD = 2 PARAMETER SECFLG$V_AMOD = 8 ! ACCESS MODE OF SECTION PARAMETER SECFLG$S_UNCACHED = 1 PARAMETER SECFLG$V_UNCACHED = 10 ! PFN-map I/O space uncached. PARAMETER SECFLG$S_READ_ONLY_SHPT = 1 PARAMETER SECFLG$V_READ_ONLY_SHPT = 11 ! Shared page tables map section read-only PARAMETER SECFLG$S_SHARED_PTS = 1 PARAMETER SECFLG$V_SHARED_PTS = 12 ! Section is a shared PT section PARAMETER SECFLG$S_MRES = 1 PARAMETER SECFLG$V_MRES = 13 ! MEMORY RESIDENT SECTION PARAMETER SECFLG$S_PERM = 1 PARAMETER SECFLG$V_PERM = 14 ! PERMANENT SECTION PARAMETER SECFLG$S_SYSGBL = 1 PARAMETER SECFLG$V_SYSGBL = 15 ! 1 = SYSTEM GLOBAL, 0 = GROUP GLOBAL ! ! ***** THE FOLLOWING FLAGS ARE INDICATORS FOR PRIVATE AND GLOBAL SECTION ! ***** SYSTEM SERVICE REQUESTS AND ARE NOT STORED IN THE FLAGS LONGWORD ! ***** FIELD. ! PARAMETER SECFLG$S_PFNMAP = 1 PARAMETER SECFLG$V_PFNMAP = 16 ! MAP TO SPECIFIC PFN'S PARAMETER SECFLG$S_EXPREG = 1 PARAMETER SECFLG$V_EXPREG = 17 ! MAP INTO FIRST FREE ADDRESS SPACE PARAMETER SECFLG$S_PROTECT = 1 PARAMETER SECFLG$V_PROTECT = 18 ! CHECK WRITE ACCESS MODE (WRTMOD) PARAMETER SECFLG$S_PAGFIL = 1 PARAMETER SECFLG$V_PAGFIL = 19 ! GLOBAL SECTION HAS PAGE FILE BACKING STORE PARAMETER SECFLG$S_EXECUTE = 1 PARAMETER SECFLG$V_EXECUTE = 20 ! CHECK FOR EXECUTE ACCESS PARAMETER SECFLG$S_NOPROTCHK = 1 PARAMETER SECFLG$V_NOPROTCHK = 21 ! INHIBIT PROTECTION CHECK PARAMETER SECFLG$S_NO_OVERMAP = 1 PARAMETER SECFLG$V_NO_OVERMAP = 22 ! DON'T OVERMAP ADDRESS SPACE PARAMETER SECFLG$S_INPROG = 1 PARAMETER SECFLG$V_INPROG = 23 ! Section creation in progress PARAMETER SECFLG$S_PARANOID = 1 PARAMETER SECFLG$V_PARANOID = 24 ! Go into paranoia mode PARAMETER SECFLG$S_GRANHINT = 1 PARAMETER SECFLG$V_GRANHINT = 25 ! Allow enhanced GH regions PARAMETER SECFLG$S_MRES_ALLOC = 1 PARAMETER SECFLG$V_MRES_ALLOC = 26 ! Allocate memory resident pages during create PARAMETER SECFLG$S_RAD_HINT = 1 PARAMETER SECFLG$V_RAD_HINT = 27 ! Allocate pages based on RAD hint BYTE %FILL (4) END MAP END UNION END STRUCTURE ! SECDEF_FLAGS PARAMETER SEC$K_MATALL = '00000000'X ! MATCH ALWAYS, USE GLOBAL SECTION PARAMETER SEC$K_MATEQU = '00000001'X ! MATCH IF ISD$L_IDENT EQU GBL ID PARAMETER SEC$K_MATLEQ = '00000002'X ! MATCH IF ISD$L_IDENT LEQ GBL ID STRUCTURE /SECDEF1/ BYTE %FILL(1:25) BYTE SEC$B_AMOD ! ACCESS MODE OF SECTION ! + ! MATCH CONTROL VIELD VALUES ! - ! BASE OF ZERO , INCR 1 END STRUCTURE ! SECDEF1 ! ! Definitions for $GETSECI service ! PARAMETER SECI$_CHAIN = '00000001'X ! Chained item block PARAMETER SECI$_GSMODE = '00000002'X ! Access mode of section PARAMETER SECI$_GSFLAGS = '00000003'X ! Flags PARAMETER SECI$_GSNAME = '00000004'X ! Global section name PARAMETER SECI$_GSIDENT = '00000005'X ! Global section ident PARAMETER SECI$_GSRELPAG = '00000006'X ! Relative page number ! ! Definitions for $UPDEC(W) AND $UPDSEC_64(W) system services ! PARAMETER UPDFLG$M_WRT_MODIFIED = '00000001'X STRUCTURE /UPDSEC_FLAGS/ UNION MAP INTEGER*4 UPDFLG$L_FLAGS ! Flags END MAP MAP PARAMETER UPDFLG$S_WRT_MODIFIED = 1 PARAMETER UPDFLG$V_WRT_MODIFIED = 0 ! Write pages only if modified BYTE %FILL (1) END MAP END UNION END STRUCTURE ! UPDSEC_FLAGS !DEC$ END OPTIONS