--******************************************************************************************************************** -- Created: 30-Mar-2010 17:02:01 by OpenVMS SDL EV3-3 -- Source: 16-MAR-2005 11:40:59 $1$DGA7274:[STARLET_ADA.LIS]TEBDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package TEBDEF is -- module $TEBDEF -- -- Thread Environment Block Definitions -- TEB_M_ASTACT : constant := 16#00000001#; TEB_M_ASTEN : constant := 16#00000002#; type TEB_THREAD_FLAGS_TYPE is -- thread flags record ASTACT : BOOLEAN; -- there's a user mode AST active ASTEN : BOOLEAN; -- use mode ASTs are enabled FILLER_1 : UNSIGNED_30; end record; for TEB_THREAD_FLAGS_TYPE use record ASTACT at 0 range 0 .. 0; ASTEN at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 31; end record; for TEB_THREAD_FLAGS_TYPE'SIZE use 32; TEB_THREAD_FLAGS_TYPE_INIT : constant TEB_THREAD_FLAGS_TYPE := (ASTACT => FALSE, ASTEN => FALSE, FILLER_1 => 0); type TEB_TYPE is record FLINK : UNSIGNED_QUADWORD; -- Forward queue link BLINK : UNSIGNED_QUADWORD; -- Backward queue link SIZE : UNSIGNED_WORD; -- Size of TEB, in bytes VERSION : UNSIGNED_BYTE; -- Version number for TEB TYP : UNSIGNED_BYTE; -- Structure type code for TEB RESERVED_2 : UNSIGNED_BYTE_ARRAY (1 .. 4); -- Reserved to DECthreads SEQUENCE : UNSIGNED_QUADWORD; -- Thread sequence number RESERVED_3 : UNSIGNED_QUADWORD_ARRAY (1 .. 2); -- Reserved to DECthreads PER_KT_AREA : UNSIGNED_QUADWORD; -- Address of per kernel thread area STACK_BASE : UNSIGNED_QUADWORD; -- Address of first usable byte in stack STACK_RESERVE : UNSIGNED_QUADWORD; -- Address of first byte in reserve area STACK_YELLOW : UNSIGNED_QUADWORD; -- Address of first byte in yellow area STACK_GUARD : UNSIGNED_QUADWORD; -- Address of first byte in guard area STACK_SIZE : UNSIGNED_QUADWORD; -- Total stack allocation (green+reserve+yellow+red) TSD_VALUES : UNSIGNED_QUADWORD; -- Address of thread-specific data array TSD_COUNT : UNSIGNED_LONGWORD; -- Count of thread-specific data values CANCEL_FLAGS : UNSIGNED_LONGWORD; -- cancel flags CANCEL_COUNT : UNSIGNED_LONGWORD; -- CMA alert scope nesting count THREAD_FLAGS : TEB_THREAD_FLAGS_TYPE; -- thread flags THD_ERRNO : INTEGER_32; -- Per-thread errno value RESERVED_4 : INTEGER_32; -- Reserved to DECthreads STACK_HIWATER : UNSIGNED_QUADWORD; -- Lowest known SP address HOME_RAD : INTEGER_32; -- Thread's home RAD RAD_SAFE : INTEGER_32; -- Scratch: written by Tru64 UNIX end record; for TEB_TYPE use record FLINK at 0 range 0 .. 63; BLINK at 8 range 0 .. 63; SIZE at 16 range 0 .. 15; VERSION at 18 range 0 .. 7; TYP at 19 range 0 .. 7; RESERVED_2 at 20 range 0 .. 31; SEQUENCE at 24 range 0 .. 63; RESERVED_3 at 32 range 0 .. 127; PER_KT_AREA at 48 range 0 .. 63; STACK_BASE at 56 range 0 .. 63; STACK_RESERVE at 64 range 0 .. 63; STACK_YELLOW at 72 range 0 .. 63; STACK_GUARD at 80 range 0 .. 63; STACK_SIZE at 88 range 0 .. 63; TSD_VALUES at 96 range 0 .. 63; TSD_COUNT at 104 range 0 .. 31; CANCEL_FLAGS at 108 range 0 .. 31; CANCEL_COUNT at 112 range 0 .. 31; THREAD_FLAGS at 116 range 0 .. 31; THD_ERRNO at 120 range 0 .. 31; RESERVED_4 at 124 range 0 .. 31; STACK_HIWATER at 128 range 0 .. 63; HOME_RAD at 136 range 0 .. 31; RAD_SAFE at 140 range 0 .. 31; end record; for TEB_TYPE'SIZE use 1152; TEB_TYPE_INIT : constant TEB_TYPE := (FLINK => (0, 0), BLINK => (0, 0), SIZE => 0, VERSION => 0, TYP => 0, RESERVED_2 => (others => 0), SEQUENCE => (0, 0), RESERVED_3 => (others => (0, 0)), PER_KT_AREA => (0, 0), STACK_BASE => (0, 0), STACK_RESERVE => (0, 0), STACK_YELLOW => (0, 0), STACK_GUARD => (0, 0), STACK_SIZE => (0, 0), TSD_VALUES => (0, 0), TSD_COUNT => 0, CANCEL_FLAGS => 0, CANCEL_COUNT => 0, THREAD_FLAGS => TEB_THREAD_FLAGS_TYPE_INIT, THD_ERRNO => 0, RESERVED_4 => 0, STACK_HIWATER => (0, 0), HOME_RAD => 0, RAD_SAFE => 0); TEB_K_LENGTH : constant := 144; -- Length of TEB TEB_C_LENGTH : constant := 144; -- Length of TEB TEB_C_TSD_KEY_SSPI : constant := 1; -- TSD key value reserved for SSPI end TEBDEF;