--******************************************************************************************************************** -- Created: 9-Mar-2021 22:28:33 by OpenVMS SDL EV3-3 -- Source: 20-NOV-2006 15:52:45 $1$DGA8085:[LIB_ADA.LIS]PKTADEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package PKTADEF is -- module $PKTADEF PKTA_M_TM_ACTIVE : constant := 16#00000001#; PKTA_M_AVOID_PREEMPT : constant := 16#00000002#; PKTA_M_IMF_PENDING : constant := 16#00000004#; PKTA_M_EVENT_NO_FLAG : constant := 16#00000001#; type PKTA_TM_FLAGS_TYPE is -- Threads manager flags record TM_ACTIVE : BOOLEAN; -- Threads manager is active AVOID_PREEMPT : BOOLEAN; -- Try to avoid preemption IMF_PENDING : BOOLEAN; -- IMSEM-free upcall is coming FILLER_1 : BIT_ARRAY (0 .. 60); end record; for PKTA_TM_FLAGS_TYPE use record TM_ACTIVE at 0 range 0 .. 0; AVOID_PREEMPT at 0 range 1 .. 1; IMF_PENDING at 0 range 2 .. 2; FILLER_1 at 0 range 3 .. 63; end record; for PKTA_TM_FLAGS_TYPE'SIZE use 64; PKTA_TM_FLAGS_TYPE_INIT : constant PKTA_TM_FLAGS_TYPE := (TM_ACTIVE => FALSE, AVOID_PREEMPT => FALSE, IMF_PENDING => FALSE, FILLER_1 => (others => FALSE)); type PKTA_PERSONA_HANDLE_TYPE is -- Security persona handle record PERSONA_ID : UNSIGNED_LONGWORD; -- SECURITY_RESERVED : UNSIGNED_LONGWORD; -- end record; for PKTA_PERSONA_HANDLE_TYPE use record PERSONA_ID at 0 range 0 .. 31; SECURITY_RESERVED at 4 range 0 .. 31; end record; for PKTA_PERSONA_HANDLE_TYPE'SIZE use 64; PKTA_PERSONA_HANDLE_TYPE_INIT : constant PKTA_PERSONA_HANDLE_TYPE := (PERSONA_ID => 0, SECURITY_RESERVED => 0); type PKTA_THREAD_EVENTS_TYPE is -- Other events to be reported to thread manager record EVENT_NO_FLAG : BOOLEAN; -- The no-flag event FILLER_1 : BIT_ARRAY (0 .. 62); end record; for PKTA_THREAD_EVENTS_TYPE use record EVENT_NO_FLAG at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 63; end record; for PKTA_THREAD_EVENTS_TYPE'SIZE use 64; PKTA_THREAD_EVENTS_TYPE_INIT : constant PKTA_THREAD_EVENTS_TYPE := (EVENT_NO_FLAG => FALSE, FILLER_1 => (others => FALSE)); type PKTA_TYPE is record TM_FLAGS : PKTA_TM_FLAGS_TYPE; -- Threads manager flags PERSONA_HANDLE : PKTA_PERSONA_HANDLE_TYPE; -- Security persona handle -- IEEE_FP_CONTROL : UNSIGNED_QUADWORD; -- IEEE exceptions control register AST_ADDRESS : UNSIGNED_QUADWORD; -- User AST routine ----Component(s) below are defined as comments since they ----overlap other fields ---- ----IOSA : UNSIGNED_QUADWORD; -- start of embedded iosa ----IOSB : UNSIGNED_QUADWORD; -- start of embedded iosa ----IOSA_STATUS : UNSIGNED_LONGWORD; -- iosa$l_status AST_PARAMETER : UNSIGNED_QUADWORD; -- User AST parameter ----Component(s) below are defined as comments since they ----overlap other fields ---- ----IOSA_COUNT : UNSIGNED_QUADWORD; -- IOSA$Q_COUNT AST_THREAD_ID : UNSIGNED_QUADWORD; -- Target user mode thread ID ----Component(s) below are defined as comments since they ----overlap other fields ---- ----IOSA_CONTEXT_Q : UNSIGNED_QUADWORD; -- IOSA$Q_CONTEXT_Q POSTEF : UNSIGNED_QUADWORD; -- Posted event flags ----Component(s) below are defined as comments since they ----overlap other fields ---- ----IOSA_CONTEXT_ID : UNSIGNED_QUADWORD; -- IOSA$Q_CONTEXT_ID THREAD_EVENTS : PKTA_THREAD_EVENTS_TYPE; -- Other events to be reported to thread manager SW_FEN_U : UNSIGNED_QUADWORD; -- Don't use for other flags because of synchronization FP_RESTORE_AREA : UNSIGNED_QUADWORD; -- Pointer to register save area to restore FP regs from -- It should be ponter_quad (FLOAT), but I don't think SDL understands that. RPCC_64_CONTEXT : UNSIGNED_QUADWORD; -- Context to allow returning a 64-bit time value with SYS$RPCC_64 UW_SPARE_1 : UNSIGNED_QUADWORD; UW_SPARE_2 : UNSIGNED_QUADWORD; KTB : UNSIGNED_QUADWORD; -- Address of KTB for this thread PID : UNSIGNED_LONGWORD; -- PID for this thread EPID : UNSIGNED_LONGWORD; -- EPID for this thread PHD : UNSIGNED_QUADWORD; -- Address of PHD KSTACK_BASE : UNSIGNED_QUADWORD; -- Kstack base address STACK : UNSIGNED_QUADWORD_ARRAY (1 .. 4); -- STACK pointer array STACKLIM : UNSIGNED_QUADWORD_ARRAY (1 .. 4); -- STACK limit pointer FRED : UNSIGNED_QUADWORD; -- Address of FRED REGSTACK : UNSIGNED_QUADWORD_ARRAY (1 .. 4); -- Register stack pointer array REGSTACKLIM : UNSIGNED_QUADWORD_ARRAY (1 .. 4); -- Register stack limit array STACK_PEAK : UNSIGNED_QUADWORD_ARRAY (1 .. 4); -- Memory stack peak array REGSTACK_PEAK : UNSIGNED_QUADWORD_ARRAY (1 .. 4); -- Register stack peak array end record; for PKTA_TYPE use record TM_FLAGS at 0 range 0 .. 63; PERSONA_HANDLE at 8 range 0 .. 63; IEEE_FP_CONTROL at 16 range 0 .. 63; AST_ADDRESS at 24 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----IOSA at 24 range 0 .. 63; ----IOSB at 24 range 0 .. 63; ----IOSA_STATUS at 24 range 0 .. 31; AST_PARAMETER at 32 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----IOSA_COUNT at 32 range 0 .. 63; AST_THREAD_ID at 40 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----IOSA_CONTEXT_Q at 40 range 0 .. 63; POSTEF at 48 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----IOSA_CONTEXT_ID at 48 range 0 .. 63; THREAD_EVENTS at 56 range 0 .. 63; SW_FEN_U at 64 range 0 .. 63; FP_RESTORE_AREA at 72 range 0 .. 63; RPCC_64_CONTEXT at 80 range 0 .. 63; UW_SPARE_1 at 88 range 0 .. 63; UW_SPARE_2 at 96 range 0 .. 63; KTB at 104 range 0 .. 63; PID at 112 range 0 .. 31; EPID at 116 range 0 .. 31; PHD at 120 range 0 .. 63; KSTACK_BASE at 128 range 0 .. 63; STACK at 136 range 0 .. 255; STACKLIM at 168 range 0 .. 255; FRED at 200 range 0 .. 63; REGSTACK at 208 range 0 .. 255; REGSTACKLIM at 240 range 0 .. 255; STACK_PEAK at 272 range 0 .. 255; REGSTACK_PEAK at 304 range 0 .. 255; end record; for PKTA_TYPE'SIZE use 2688; PKTA_TYPE_INIT : constant PKTA_TYPE := ( TM_FLAGS => PKTA_TM_FLAGS_TYPE_INIT, PERSONA_HANDLE => PKTA_PERSONA_HANDLE_TYPE_INIT, IEEE_FP_CONTROL => (0, 0), AST_ADDRESS => (0, 0), AST_PARAMETER => (0, 0), AST_THREAD_ID => (0, 0), POSTEF => (0, 0), THREAD_EVENTS => PKTA_THREAD_EVENTS_TYPE_INIT, SW_FEN_U => (0, 0), FP_RESTORE_AREA => (0, 0), RPCC_64_CONTEXT => (0, 0), UW_SPARE_1 => (0, 0), UW_SPARE_2 => (0, 0), KTB => (0, 0), PID => 0, EPID => 0, PHD => (0, 0), KSTACK_BASE => (0, 0), STACK => (others => (0, 0)), STACKLIM => (others => (0, 0)), FRED => (0, 0), REGSTACK => (others => (0, 0)), REGSTACKLIM => (others => (0, 0)), STACK_PEAK => (others => (0, 0)), REGSTACK_PEAK => (others => (0, 0))); PKTA_S_URUW : constant := 104; -- Length URUW section PKTA_S_UREW : constant := 232; -- Length UREW section PKTA_C_LENGTH : constant := 336; -- Length PKTA PKTA_K_LENGTH : constant := 336; -- Length PKTA PKTA_S_PKTADEF : constant := 336; -- Old size name - synonym end PKTADEF;