! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! ! Thread Environment Block Definitions ! DECLARE LONG CONSTANT TEB$M_ASTACT = x'00000001' DECLARE LONG CONSTANT TEB$M_ASTEN = x'00000002' DECLARE LONG CONSTANT TEB$S_TEB = 144 record TEB BASIC$QUADWORD TEB$PQ_FLINK ! Forward queue link BASIC$QUADWORD TEB$PQ_BLINK ! Backward queue link WORD TEB$W_SIZE ! Size of TEB, in bytes BYTE TEB$B_VERSION ! Version number for TEB BYTE TEB$B_TYPE ! Structure type code for TEB BYTE TEB$b_reserved_2 ( 1 to 4 ) ! Reserved to DECthreads BASIC$QUADWORD TEB$Q_SEQUENCE ! Thread sequence number BASIC$QUADWORD TEB$q_reserved_3 ( 1 to 2 ) ! Reserved to DECthreads BASIC$QUADWORD TEB$PQ_PER_KT_AREA ! Address of per kernel thread area BASIC$QUADWORD TEB$PQ_STACK_BASE ! Address of first usable byte in stack BASIC$QUADWORD TEB$PQ_STACK_RESERVE ! Address of first byte in reserve area BASIC$QUADWORD TEB$PQ_STACK_YELLOW ! Address of first byte in yellow area BASIC$QUADWORD TEB$PQ_STACK_GUARD ! Address of first byte in guard area BASIC$QUADWORD TEB$Q_STACK_SIZE ! Total stack allocation (green+reserve+yellow+red) BASIC$QUADWORD TEB$PQ_TSD_VALUES ! Address of thread-specific data array LONG TEB$L_TSD_COUNT ! Count of thread-specific data values LONG TEB$L_CANCEL_FLAGS ! cancel flags LONG TEB$L_CANCEL_COUNT ! CMA alert scope nesting count group TEB$R_FILL_27_ variant case LONG TEB$L_THREAD_FLAGS ! thread flags case group TEB$R_FILL_28_ ! there's a user mode AST active ! use mode ASTs are enabled BYTE ASTACT_bits ! COMMENT ADDED BY SDL - ASTACT_bits contains bits ASTACT through FILL_29_ end group TEB$R_FILL_28_ end variant end group TEB$R_FILL_27_ LONG TEB$L_THD_ERRNO ! Per-thread errno value LONG TEB$l_reserved_4 ! Reserved to DECthreads BASIC$QUADWORD TEB$PQ_STACK_HIWATER ! Lowest known SP address LONG TEB$L_HOME_RAD ! Thread's home RAD LONG TEB$L_RAD_SAFE ! Scratch: written by Tru64 UNIX end record TEB DECLARE LONG CONSTANT TEB$K_LENGTH = 144 ! Length of TEB DECLARE LONG CONSTANT TEB$C_LENGTH = 144 ! Length of TEB DECLARE LONG CONSTANT TEB$C_TSD_KEY_SSPI = 1 ! TSD key value reserved for SSPI