/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, Hewlett-Packard Development Company, L.P. **/ /** **/ /** Confidential computer software. Valid license from HP and/or **/ /** its subsidiaries required for possession, use, or copying. **/ /** **/ /** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, **/ /** Computer Software Documentation, and Technical Data for Commercial **/ /** Items are licensed to the U.S. Government under vendor's standard **/ /** commercial license. **/ /** **/ /** Neither HP nor any of its subsidiaries shall be liable for technical **/ /** or editorial errors or omissions contained herein. The information **/ /** in this document is provided "as is" without warranty of any kind and **/ /** is subject to change without notice. The warranties for HP products **/ /** are set forth in the express limited warranty statements accompanying **/ /** such products. Nothing herein should be construed as constituting an **/ /** additional warranty. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:25:55 by OpenVMS SDL EV3-3 */ /* Source: 11-OCT-2001 16:19:26 $1$DGA7274:[LIB_H.SRC]TQEDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $TQEDEF ***/ #ifndef __TQEDEF_LOADED #define __TQEDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /*+ */ /* TQE - TIME QUEUE ENTRY */ /* */ /* TIME QUEUE ENTRIES ARE UTILIZED TO SET TIMERS, WAKE UP PROCESSES, AND */ /* FOR INTERNAL SYSTEM SUBROUTINES. */ /*- */ #define TQE$M_TQTYPE 0x3 #define TQE$M_REPEAT 0x4 #define TQE$M_ABSOLUTE 0x8 #define TQE$M_CHK_CPUTIM 0x10 #define TQE$M_EXTENDED_FORMAT 0x20 #define TQE$M_ASTNODEL 0x40 #define TQE$M_RSRVD_7 0x80 #define TQE$C_TMSNGL 0 /*TIMER ENTRY SINGLE SHOT REQUEST */ #define TQE$C_SSREPT 5 /*SYSTEM SUBROUTINE REPEAT REQUEST */ #define TQE$C_SSSNGL 1 /*SYSTEM SUBROUTINE SINGLE SHOT REQUEST */ #define TQE$C_WKREPT 6 /*WAKE ENTRY REPEAT REQUEST */ #define TQE$C_WKSNGL 2 /*WAKE ENTRY SINGLE SHOT REQUEST */ #define TQE$S_TQEDEF 64 /* Old size name - synonym */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _tqe { #pragma __nomember_alignment struct _tqe *tqe$l_tqfl; /*TIME QUEUE FORWARD LINK */ struct _tqe *tqe$l_tqbl; /*TIME QUEUE BACKWARD LINK */ unsigned short int tqe$w_size; /*SIZE OF TQE IN BYTES */ unsigned char tqe$b_type; /*STRUCTURE TYPE FOR TQE */ __union { unsigned char tqe$b_rqtype; /*TIME QUEUE ENTRY TYPE */ __struct { unsigned tqe$v_tqtype : 2; /* TQE type (timer, subroutine, wake) */ unsigned tqe$v_repeat : 1; /* REPEAT REQUEST (1=YES) */ unsigned tqe$v_absolute : 1; /* Absolute expiration time specified */ unsigned tqe$v_chk_cputim : 1; /* Process CPU time constrained request */ unsigned tqe$v_extended_format : 1; /* Extended AST fields included in size */ unsigned tqe$v_astnodel : 1; /* Don't deallocate TQE/ACB after AST delivery */ unsigned tqe$v_rsrvd_7 : 1; /* Unused bit */ } tqe$r_rqtype_bits; } tqe$r_rqtype_overlay; __union { unsigned int tqe$l_pid; /*TIMER OR WAKE REQUEST PROCESS ID */ int tqe$l_fpc; /*TIMER SUBROUTINE ADDRESS */ } tqe$r_pid_overlay; __union { __struct { void (*tqe$l_ast)(); /*ADDRESS OF AST ROUTINE */ unsigned int tqe$l_astprm; /*AST PARAMETER */ } tqe$r_ast_fields; __int64 tqe$q_fr3; /*TIMER SUBROUTINE SAVED R3 */ } tqe$r_ast_overlay; __int64 tqe$q_fr4; /*TIMER SUBROUTINE SAVED R4 */ unsigned __int64 tqe$q_time; /*ABSOLUTE EXPIRATION TIME */ unsigned __int64 tqe$q_delta; /*DELTA REPEAT TIME */ unsigned int tqe$l_rmod; /*ACCESS MODE OF REQUEST */ unsigned int tqe$l_efn; /*EVENT FLAG NUMBER AND EVENT GROUP */ unsigned int tqe$l_rqpid; /*REQUESTER PROCESS ID */ unsigned int tqe$l_cputim; /* Process CPU time at which entry becomes due */ /* TIME QUEUE ENTRY REQUEST TYPE DEFINITIONS */ } TQE; #if !defined(__VAXC) #define tqe$b_rqtype tqe$r_rqtype_overlay.tqe$b_rqtype #define tqe$v_tqtype tqe$r_rqtype_overlay.tqe$r_rqtype_bits.tqe$v_tqtype #define tqe$v_repeat tqe$r_rqtype_overlay.tqe$r_rqtype_bits.tqe$v_repeat #define tqe$v_absolute tqe$r_rqtype_overlay.tqe$r_rqtype_bits.tqe$v_absolute #define tqe$v_chk_cputim tqe$r_rqtype_overlay.tqe$r_rqtype_bits.tqe$v_chk_cputim #define tqe$v_extended_format tqe$r_rqtype_overlay.tqe$r_rqtype_bits.tqe$v_extended_format #define tqe$v_astnodel tqe$r_rqtype_overlay.tqe$r_rqtype_bits.tqe$v_astnodel #define tqe$v_rsrvd_7 tqe$r_rqtype_overlay.tqe$r_rqtype_bits.tqe$v_rsrvd_7 #define tqe$l_pid tqe$r_pid_overlay.tqe$l_pid #define tqe$l_fpc tqe$r_pid_overlay.tqe$l_fpc #define tqe$l_ast tqe$r_ast_overlay.tqe$r_ast_fields.tqe$l_ast #define tqe$l_astprm tqe$r_ast_overlay.tqe$r_ast_fields.tqe$l_astprm #define tqe$q_fr3 tqe$r_ast_overlay.tqe$q_fr3 #endif /* #if !defined(__VAXC) */ #define TQE$K_LENGTH 64 /*LENGTH OF STANDARD TQE */ #define TQE$C_LENGTH 64 /*LENGTH OF STANDARD TQE */ /* */ /* */ /* Extended version of TQE to support a 64-bit ACB if it is embedded in this */ /* structure. Basically, the original TQE format remains the same as before, */ /* but if the EXTENDED_FORMAT bit is set in RQTYPE, the extra ACB quadwords */ /* are included in the structure and the internal ACB is configured to look */ /* like the 64-bit extended version with a valid flags longword. */ /* */ #define TQE64$M_TQTYPE 0x3 #define TQE64$M_REPEAT 0x4 #define TQE64$M_ABSOLUTE 0x8 #define TQE64$M_CHK_CPUTIM 0x10 #define TQE64$M_EXTENDED_FORMAT 0x20 #define TQE64$M_ASTNODEL 0x40 #define TQE64$C_TMSNGL 0 /*TIMER ENTRY SINGLE SHOT REQUEST */ #define TQE64$C_SSREPT 5 /*SYSTEM SUBROUTINE REPEAT REQUEST */ #define TQE64$C_SSSNGL 1 /*SYSTEM SUBROUTINE SINGLE SHOT REQUEST */ #define TQE64$C_WKREPT 6 /*WAKE ENTRY REPEAT REQUEST */ #define TQE64$C_WKSNGL 2 /*WAKE ENTRY SINGLE SHOT REQUEST */ #define TQE64$S_TQEDEF 88 /*Size name - synonym */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _tqe64 { #pragma __nomember_alignment struct _tqe *tqe64$l_tqfl; /*TIME QUEUE FORWARD LINK */ struct _tqe *tqe64$l_tqbl; /*TIME QUEUE BACKWARD LINK */ unsigned short int tqe64$w_size; /*SIZE OF TQE IN BYTES */ unsigned char tqe64$b_type; /*STRUCTURE TYPE FOR TQE */ __union { unsigned char tqe64$b_rqtype; /*TIME QUEUE ENTRY TYPE */ __struct { unsigned tqe64$v_tqtype : 2; /* TQE type (timer, subroutine, wake) */ unsigned tqe64$v_repeat : 1; /* REPEAT REQUEST (1=YES) */ unsigned tqe64$v_absolute : 1; /* Absolute expiration time specified */ unsigned tqe64$v_chk_cputim : 1; /* Process CPU time constrained request */ unsigned tqe64$v_extended_format : 1; /* Extended AST fields included in size */ unsigned tqe64$v_astnodel : 1; /* Don't deallocate TQE/ACB after AST delivery */ unsigned tqe64$v_fill_0_ : 1; } tqe64$r_rqtype_bits; } tqe64$r_rqtype_overlay; __union { unsigned int tqe64$l_pid; /*TIMER OR WAKE REQUEST PROCESS ID */ int tqe64$l_fpc; /*TIMER SUBROUTINE ADDRESS */ } tqe64$r_pid_overlay; __union { __struct { unsigned int tqe64$l_acb64x; /*OFFSET TO ACB64X STRUCTURE */ int tqe64$l_fill_2; /*Not used in ACB64 (ASTPRM in ACB) */ } tqe64$r_ast_fields; __int64 tqe64$q_fr3; /*TIMER SUBROUTINE SAVED R3 */ } tqe64$r_ast_overlay; __int64 tqe64$q_fr4; /*TIMER SUBROUTINE SAVED R4 */ unsigned __int64 tqe64$q_time; /*ABSOLUTE EXPIRATION TIME */ unsigned __int64 tqe64$q_delta; /*DELTA REPEAT TIME */ unsigned int tqe64$l_rmod; /*ACCESS MODE OF REQUEST */ unsigned int tqe64$l_efn; /*EVENT FLAG NUMBER AND EVENT GROUP */ unsigned int tqe64$l_rqpid; /*REQUESTER PROCESS ID */ unsigned int tqe64$l_cputim; /* Process CPU time at which entry becomes due */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void (*tqe64$pq_ast)(); /*64-bit AST address */ #else unsigned __int64 tqe64$pq_ast; #endif unsigned __int64 tqe64$q_astprm; /*64-bit ASTPRM value */ unsigned __int64 tqe64$q_user_thread_id; /*Unique thread-specific identifier */ /* TIME QUEUE ENTRY REQUEST TYPE DEFINITIONS */ } TQE64; #if !defined(__VAXC) #define tqe64$b_rqtype tqe64$r_rqtype_overlay.tqe64$b_rqtype #define tqe64$v_tqtype tqe64$r_rqtype_overlay.tqe64$r_rqtype_bits.tqe64$v_tqtype #define tqe64$v_repeat tqe64$r_rqtype_overlay.tqe64$r_rqtype_bits.tqe64$v_repeat #define tqe64$v_absolute tqe64$r_rqtype_overlay.tqe64$r_rqtype_bits.tqe64$v_absolute #define tqe64$v_chk_cputim tqe64$r_rqtype_overlay.tqe64$r_rqtype_bits.tqe64$v_chk_cputim #define tqe64$v_extended_format tqe64$r_rqtype_overlay.tqe64$r_rqtype_bits.tqe64$v_extended_format #define tqe64$v_astnodel tqe64$r_rqtype_overlay.tqe64$r_rqtype_bits.tqe64$v_astnodel #define tqe64$l_pid tqe64$r_pid_overlay.tqe64$l_pid #define tqe64$l_fpc tqe64$r_pid_overlay.tqe64$l_fpc #define tqe64$l_acb64x tqe64$r_ast_overlay.tqe64$r_ast_fields.tqe64$l_acb64x #define tqe64$q_fr3 tqe64$r_ast_overlay.tqe64$q_fr3 #endif /* #if !defined(__VAXC) */ #define TQE64$K_LENGTH 88 /*Length of 64-bit TQE */ #define TQE64$C_LENGTH 88 /*Length of 64-bit TQE */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __TQEDEF_LOADED */