/**/ /***************************************************************************/ /** **/ /** © 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:26:07 by OpenVMS SDL EV3-3 */ /* Source: 14-JUN-2005 15:52:49 $1$DGA7274:[LIB_H.SRC]ACBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $ACBDEF ***/ #ifndef __ACBDEF_LOADED #define __ACBDEF_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 /*+ */ /* AST CONTROL BLOCK DEFINITIONS */ /* */ /* AST CONTROL BLOCKS EXIST AS SEPARATE STRUCTURES AND AS SUBSTRUCTURES */ /* WITHIN LARGER CONTROL BLOCKS SUCH AS I/O REQUEST PACKETS AND TIMER */ /* QUEUE ENTRIES. */ /* */ /*- */ #define ACB$M_FLAGS_VALID 0x4 #define ACB$M_POSIX_ACB 0x8 #define ACB$M_PKAST 0x10 #define ACB$M_NODELETE 0x20 #define ACB$M_QUOTA 0x40 #define ACB$M_KAST 0x80 #define ACB$M_THREAD_SAFE 0x1 #define ACB$M_THREAD_PID_VALID 0x2 #define ACB$M_UPCALL 0x4 #define ACB$M_FASTIO 0x8 #define ACB$M_64BITS 0x10 #define ACB$M_NOFLOAT 0x20 #define ACB$M_KAST_NOFLOAT 0x40 #define ACB$M_USER_THREAD_ID_VALID 0x80 #define ACB$M_EXCLUSIVE 0x100 #define ACB$M_TOLERANT 0x200 #define ACB$M_NODUP 0x400 #define ACB$M_FIRST_IN_QUEUE 0x800 #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 _acb { #pragma __nomember_alignment struct _acb *acb$l_astqfl; /*AST QUEUE FORWARD LINK */ struct _acb *acb$l_astqbl; /*AST QUEUE BACKWARD LINK */ unsigned short int acb$w_size; /*STRUCTURE SIZE IN BYTES */ unsigned char acb$b_type; /*STRUCTURE TYPE CODE */ __union { unsigned char acb$b_rmod; /*REQUEST ACCESS MODE */ __struct { unsigned acb$v_mode : 2; /*MODE FOR FINAL DELIVERY */ unsigned acb$v_flags_valid : 1; /*FLAGS IN FLAG_ID ARE VALID */ unsigned acb$v_posix_acb : 1; /*USED FOR DELIVERING SIGNALS/EVENTS */ unsigned acb$v_pkast : 1; /*PIGGY BACK SPECIAL KERNEL AST */ unsigned acb$v_nodelete : 1; /*DON'T DELETE ACB ON DELIVERY */ unsigned acb$v_quota : 1; /*ACCOUNT FOR QUOTA */ unsigned acb$v_kast : 1; /*SPECIAL KERNEL AST */ } acb$r_rmod_bits; } acb$r_rmod_overlay; unsigned int acb$l_pid; /*PROCESS ID OF REQUEST */ __union { void (*acb$l_ast)(); /*AST ROUTINE ADDRESS */ unsigned int acb$l_acb64x; /*OFFSET TO ACB64X STRUCTURE */ } acb$r_ast_overlay; unsigned int acb$l_astprm; /*AST PARAMETER */ __union { unsigned int acb$l_flags; /*AST CONTROL FLAGS */ __struct { unsigned acb$v_thread_safe : 1; /*AST DOES NOT REQUIRE SYNCHRONIZATION */ unsigned acb$v_thread_pid_valid : 1; /*THREAD_PID FIELD CONTAINS A VALID THREAD PID */ unsigned acb$v_upcall : 1; /*THIS AST IS ALREADY AN UPCALL */ unsigned acb$v_fastio : 1; /* This ACB is really a Fast-IO IRP */ unsigned acb$v_64bits : 1; /* This ACB has a 64-bit AST and ASTPRM */ unsigned acb$v_nofloat : 1; /* The AST routine will not use FP registers */ unsigned acb$v_kast_nofloat : 1; /* The special kernel AST routine will not use FP registers */ unsigned acb$v_user_thread_id_valid : 1; /* USER_THREAD_ID field contains a valid identifier */ /* Only valid in conjunction with '64BITS' */ unsigned acb$v_exclusive : 1; /*AST REQUIRES EXCLUSIVE ACCESS TO INNER MODE */ unsigned acb$v_tolerant : 1; /*THREAD SAFE AST WHICH BLOCKS EXCLUSIVE ACCESS TO INNER MODE */ unsigned acb$v_nodup : 1; /* Do not queue the ACB if ASTADR/ASTPRM match ACB at the tail */ unsigned acb$v_first_in_queue : 1; /* Should be queued first. Don't put (e.g.) stalled ACBs in front. */ unsigned acb$v_fill_0_ : 4; } acb$r_flag_bits; } acb$r_flags_overlay; unsigned int acb$l_thread_pid; /*PID of actual target KTB */ void (*acb$l_kast)(); /*INTERNAL KERNEL MODE XFER ADDRESS */ } ACB; #if !defined(__VAXC) #define acb$b_rmod acb$r_rmod_overlay.acb$b_rmod #define acb$v_mode acb$r_rmod_overlay.acb$r_rmod_bits.acb$v_mode #define acb$v_flags_valid acb$r_rmod_overlay.acb$r_rmod_bits.acb$v_flags_valid #define acb$v_posix_acb acb$r_rmod_overlay.acb$r_rmod_bits.acb$v_posix_acb #define acb$v_pkast acb$r_rmod_overlay.acb$r_rmod_bits.acb$v_pkast #define acb$v_nodelete acb$r_rmod_overlay.acb$r_rmod_bits.acb$v_nodelete #define acb$v_quota acb$r_rmod_overlay.acb$r_rmod_bits.acb$v_quota #define acb$v_kast acb$r_rmod_overlay.acb$r_rmod_bits.acb$v_kast #define acb$l_ast acb$r_ast_overlay.acb$l_ast #define acb$l_acb64x acb$r_ast_overlay.acb$l_acb64x #define acb$l_flags acb$r_flags_overlay.acb$l_flags #define acb$v_thread_safe acb$r_flags_overlay.acb$r_flag_bits.acb$v_thread_safe #define acb$v_thread_pid_valid acb$r_flags_overlay.acb$r_flag_bits.acb$v_thread_pid_valid #define acb$v_upcall acb$r_flags_overlay.acb$r_flag_bits.acb$v_upcall #define acb$v_fastio acb$r_flags_overlay.acb$r_flag_bits.acb$v_fastio #define acb$v_64bits acb$r_flags_overlay.acb$r_flag_bits.acb$v_64bits #define acb$v_nofloat acb$r_flags_overlay.acb$r_flag_bits.acb$v_nofloat #define acb$v_kast_nofloat acb$r_flags_overlay.acb$r_flag_bits.acb$v_kast_nofloat #define acb$v_user_thread_id_valid acb$r_flags_overlay.acb$r_flag_bits.acb$v_user_thread_id_valid #define acb$v_exclusive acb$r_flags_overlay.acb$r_flag_bits.acb$v_exclusive #define acb$v_tolerant acb$r_flags_overlay.acb$r_flag_bits.acb$v_tolerant #define acb$v_nodup acb$r_flags_overlay.acb$r_flag_bits.acb$v_nodup #define acb$v_first_in_queue acb$r_flags_overlay.acb$r_flag_bits.acb$v_first_in_queue #endif /* #if !defined(__VAXC) */ #define ACB$K_LENGTH 36 /* Length of block. */ #define ACB$C_LENGTH 36 /* Length of block. */ #define ACB$S_ACBDEF 36 /* Old size name, synonym for ACB$S_ACB */ #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 _acb64x { #pragma __nomember_alignment #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 (*acb64x$pq_ast)(); /*64-BIT AST ROUTINE ADDRESS */ #else unsigned __int64 acb64x$pq_ast; #endif unsigned __int64 acb64x$q_astprm; /*64-BIT AST PARAMETER */ unsigned __int64 acb64x$q_user_thread_id; /*Unique user thread identifier */ } ACB64X; #define ACB64X$K_LENGTH 24 /* Length of block. */ #define ACB64X$C_LENGTH 24 /* Length of block. */ #define ACB64$M_FLAGS_VALID 0x4 #define ACB64$M_POSIX_ACB 0x8 #define ACB64$M_PKAST 0x10 #define ACB64$M_NODELETE 0x20 #define ACB64$M_QUOTA 0x40 #define ACB64$M_KAST 0x80 #define ACB64$M_THREAD_SAFE 0x1 #define ACB64$M_THREAD_PID_VALID 0x2 #define ACB64$M_UPCALL 0x4 #define ACB64$M_FASTIO 0x8 #define ACB64$M_64BITS 0x10 #define ACB64$M_NOFLOAT 0x20 #define ACB64$M_KAST_NOFLOAT 0x40 #define ACB64$M_USER_THREAD_ID_VALID 0x80 #define ACB64$M_EXCLUSIVE 0x100 #define ACB64$M_TOLERANT 0x200 #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 _acb64 { #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif struct _acb *acb64$l_astqfl; /*AST QUEUE FORWARD LINK */ struct _acb *acb64$l_astqbl; /*AST QUEUE BACKWARD LINK */ unsigned short int acb64$w_size; /*STRUCTURE SIZE IN BYTES */ unsigned char acb64$b_type; /*STRUCTURE TYPE CODE */ __union { unsigned char acb64$b_rmod; /*REQUEST ACCESS MODE */ __struct { unsigned acb64$v_mode : 2; /*MODE FOR FINAL DELIVERY */ unsigned acb64$v_flags_valid : 1; /*FLAGS IN FLAG_ID ARE VALID (always set in ACB64) */ unsigned acb64$v_posix_acb : 1; /*USED FOR DELIVERING SIGNALS/EVENTS */ unsigned acb64$v_pkast : 1; /*PIGGY BACK SPECIAL KERNEL AST */ unsigned acb64$v_nodelete : 1; /*DON'T DELETE ACB ON DELIVERY */ unsigned acb64$v_quota : 1; /*ACCOUNT FOR QUOTA */ unsigned acb64$v_kast : 1; /*SPECIAL KERNEL AST */ } acb64$r_rmod_bits; } acb64$r_rmod_overlay; unsigned int acb64$l_pid; /*PROCESS ID OF REQUEST */ unsigned int acb64$l_acb64x; /*OFFSET TO ACB64X STRUCTURE (Always equals ACB64$Q_AST in ACB64) */ int acb64$l_fill_1; /*Not used in ACB64 (ASTPRM in ACB) */ __union { unsigned int acb64$l_flags; /*AST CONTROL FLAGS */ __struct { unsigned acb64$v_thread_safe : 1; /*AST DOES NOT REQUIRE SYNCHRONIZATION */ unsigned acb64$v_thread_pid_valid : 1; /*THREAD_PID FIELD CONTAINS A VALID THREAD PID */ unsigned acb64$v_upcall : 1; /*THIS AST IS ALREADY AN UPCALL */ unsigned acb64$v_fastio : 1; /* This ACB is really a Fast-IO IRP */ unsigned acb64$v_64bits : 1; /* This ACB has a 64-bit AST and ASTPRM (always set in ACB64) */ unsigned acb64$v_nofloat : 1; /* The AST routine will not use FP registers */ unsigned acb64$v_kast_nofloat : 1; /* The special kernel AST routine will not use FP registers */ unsigned acb64$v_user_thread_id_valid : 1; /* USER_THREAD_ID field contains a valid identifier */ unsigned acb64$v_exclusive : 1; /*AST REQUIRES EXCLUSIVE ACCESS TO INNER MODE */ unsigned acb64$v_tolerant : 1; /*THREAD SAFE AST WHICH BLOCKS EXCLUSIVE ACCESS TO INNER MODE */ unsigned acb64$v_fill_1_ : 6; } acb64$r_flag_bits; } acb64$r_flags_overlay; unsigned int acb64$l_thread_pid; /*PID of actual target KTB */ void (*acb64$l_kast)(); /*INTERNAL KERNEL MODE XFER ADDRESS */ int acb64$l_fill_2; /*FILL TO QUADWORD ALIGN ACB64X */ #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 (*acb64$pq_ast)(); /*64-BIT AST ROUTINE ADDRESS */ #else unsigned __int64 acb64$pq_ast; #endif unsigned __int64 acb64$q_astprm; /*64-BIT AST PARAMETER */ unsigned __int64 acb64$q_user_thread_id; /*Unique user thread identifier */ } ACB64; #if !defined(__VAXC) #define acb64$b_rmod acb64$r_rmod_overlay.acb64$b_rmod #define acb64$v_mode acb64$r_rmod_overlay.acb64$r_rmod_bits.acb64$v_mode #define acb64$v_flags_valid acb64$r_rmod_overlay.acb64$r_rmod_bits.acb64$v_flags_valid #define acb64$v_posix_acb acb64$r_rmod_overlay.acb64$r_rmod_bits.acb64$v_posix_acb #define acb64$v_pkast acb64$r_rmod_overlay.acb64$r_rmod_bits.acb64$v_pkast #define acb64$v_nodelete acb64$r_rmod_overlay.acb64$r_rmod_bits.acb64$v_nodelete #define acb64$v_quota acb64$r_rmod_overlay.acb64$r_rmod_bits.acb64$v_quota #define acb64$v_kast acb64$r_rmod_overlay.acb64$r_rmod_bits.acb64$v_kast #define acb64$l_flags acb64$r_flags_overlay.acb64$l_flags #define acb64$v_thread_safe acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_thread_safe #define acb64$v_thread_pid_valid acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_thread_pid_valid #define acb64$v_upcall acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_upcall #define acb64$v_fastio acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_fastio #define acb64$v_64bits acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_64bits #define acb64$v_nofloat acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_nofloat #define acb64$v_kast_nofloat acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_kast_nofloat #define acb64$v_user_thread_id_valid acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_user_thread_id_valid #define acb64$v_exclusive acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_exclusive #define acb64$v_tolerant acb64$r_flags_overlay.acb64$r_flag_bits.acb64$v_tolerant #endif /* #if !defined(__VAXC) */ #define ACB64$K_LENGTH 64 /* Length of block. */ #define ACB64$C_LENGTH 64 /* Length of block. */ /* */ /* In order to make the inner mode semaphore history trace in SDA readable, */ /* the following symbols are defined. These are the values that are stored */ /* in the second longword of the semaphore history record. SDA automatically */ /* tries to symbolize these values. By creating named values, the semaphore */ /* history can be effectively read like prose. */ /* */ /* Note that __RELEASE_KERNEL_AST is defined by hand in ASTDEL_STACK.M64 */ /* */ #define ACQUIRE_SCH$QAST 180355072 #define ACQUIRE_KERNEL_AST 178257920 #define ACQUIRE_EXEC_AST 178323456 #define ACQUIRE_SPKAST 178388992 #define ACQUIRE_PIGGYBACK 178454528 #define __RELEASE_KERNEL_AST 183500800 #define __RELEASE_EXEC_AST 183566336 #define __RELEASE_SPKAST 183631872 #define __RELEASE_PIGGYBACK 183697408 #define __RELEASE_AST_ERROR 183369728 #define __RELEASE_ASTFAULT 183435264 #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 /* __ACBDEF_LOADED */