/**/ /***************************************************************************/ /** **/ /** © 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:38:04 by OpenVMS SDL EV3-3 */ /* Source: 18-AUG-2005 03:59:32 $1$DGA7274:[LIB_H.SRC]PSHDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $PSHDEF ***/ #ifndef __PSHDEF_LOADED #define __PSHDEF_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 #include #include /* */ /* Pshared Data Tag Structure */ /* */ #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 _pshared_data { #pragma __nomember_alignment unsigned char pshdat$b_type; /* data tag type */ unsigned char pshdat$b_op; /* data tag operation */ unsigned short int pshdat$w_offset; /* offset */ unsigned int pshdat$l_modifiers; /* modifiers */ } PSHARED_DATA; /* */ /* Pshared Lock Structure */ /* */ #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 _pshared_lock { #pragma __nomember_alignment __union { __int64 pshlck$q_lock_state; /* lock state */ __struct { unsigned pshlck$v_mutex_lock : 1; /* mutex lock bit */ unsigned pshlck$v_mutex_waiters : 31; /* mutex waiters count */ unsigned pshlck$v_mutex_waiters_high : 32; /* not used */ } pshlck$r_mutex_bits; __struct { unsigned pshlck$v_write_lock : 1; /* write lock bit */ unsigned pshlck$v_write_waiters : 31; /* number of writers */ unsigned pshlck$v_readers_waiting : 1; /* number of readers waiting */ unsigned pshlck$v_readers : 31; /* number of readers */ } pshlck$r_rwl_bits; } pshlck$r_lock_state_overlay; } PSHARED_LOCK; #if !defined(__VAXC) #define pshlck$q_lock_state pshlck$r_lock_state_overlay.pshlck$q_lock_state #define pshlck$v_mutex_lock pshlck$r_lock_state_overlay.pshlck$r_mutex_bits.pshlck$v_mutex_lock #define pshlck$v_mutex_waiters pshlck$r_lock_state_overlay.pshlck$r_mutex_bits.pshlck$v_mutex_waiters #define pshlck$v_mutex_waiters_high pshlck$r_lock_state_overlay.pshlck$r_mutex_bits.pshlck$v_mutex_waiters_high #define pshlck$v_write_lock pshlck$r_lock_state_overlay.pshlck$r_rwl_bits.pshlck$v_write_lock #define pshlck$v_write_waiters pshlck$r_lock_state_overlay.pshlck$r_rwl_bits.pshlck$v_write_waiters #define pshlck$v_readers_waiting pshlck$r_lock_state_overlay.pshlck$r_rwl_bits.pshlck$v_readers_waiting #define pshlck$v_readers pshlck$r_lock_state_overlay.pshlck$r_rwl_bits.pshlck$v_readers #endif /* #if !defined(__VAXC) */ /* */ /* Pshared State Structure */ /* */ #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 _pshared_state { #pragma __nomember_alignment unsigned __int64 pshsta$q_lock; /* */ int pshsta$l_count; /* */ int pshsta$l_status; /* */ unsigned __int64 pshsta$q_vm_object; /* */ } PSHARED_STATE; /* */ /* Pshared Owner Structure */ /* */ #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 _pshared_owner { #pragma __nomember_alignment int pshown$l_owner_pid; /* process identification (PID) of process */ int pshown$l_owner_type; /* owner type */ unsigned __int64 pshown$q_owner_id; /* thread environment block (TEB) */ } PSHARED_OWNER; /* */ /* Pshared Global Structure */ /* */ #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 _pshared_gbl { #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 */ struct _pshared_gbl *pshgbl$q_flink; /* flink to next pshared global structure */ #else unsigned __int64 pshgbl$q_flink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_gbl *pshgbl$q_blink; /* blink to previous pshared global structure */ #else unsigned __int64 pshgbl$q_blink; #endif int pshgbl$l_pid; /* process identification of this process */ int pshgbl$l_imgcnt; /* image count for this process */ unsigned __int64 pshgbl$q_start_va; /* starting VA of global section in process space */ } PSHARED_GBL; /* */ /* Pshared Wait Structure */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _pcb; struct _pshared_timout; struct _pshared_master; #endif /* #ifdef __cplusplus */ #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 _pshared_wait { #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 */ struct _pshared_wait *pshwt$q_flink; /* flink to next wait structure */ #else unsigned __int64 pshwt$q_flink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_wait *pshwt$q_blink; /* blink to previous wait structure */ #else unsigned __int64 pshwt$q_blink; #endif int pshwt$l_type; /* wait type */ int pshwt$l_priority; /* thread priority */ int pshwt$l_pid; /* process or thread identification */ #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 _pcb *pshwt$l_pcb; /* short pointer to process control block */ int pshwt$l_ctx; /* thread context pointer */ int pshwt$l_imgcnt; /* image count for this process */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_timout *pshwt$q_timeout_ele; /* pointer to timeout structure */ #else unsigned __int64 pshwt$q_timeout_ele; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_master *pshwt$q_master; /* pointer to pshared master */ #else unsigned __int64 pshwt$q_master; #endif } PSHARED_WAIT; /* */ /* Pshared Timout Structure */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _pshared_object; struct _pshared_master; #endif /* #ifdef __cplusplus */ #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 _pshared_timout { #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 */ struct _pshared_timout *pshtim$q_flink; /* flink to next timeout structure */ #else unsigned __int64 pshtim$q_flink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_timout *pshtim$q_blink; /* blink to previous timeout structure */ #else unsigned __int64 pshtim$q_blink; #endif int pshtim$l_type; /* timeout type */ int pshtim$l_spare1; /* spare field */ unsigned __int64 pshtim$q_timeout; /* timeout value for this structure */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_object *pshtim$q_object; /* pointer to pshared object (CV or mutex) */ #else unsigned __int64 pshtim$q_object; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_wait *pshtim$q_wait_ele; /* pointer to wait structure */ #else unsigned __int64 pshtim$q_wait_ele; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_master *pshtim$q_master; /* pointer to pshared master */ #else unsigned __int64 pshtim$q_master; #endif } PSHARED_TIMOUT; /* */ /* Pshared Object Structure */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _pshared_master; #endif /* #ifdef __cplusplus */ #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 _pshared_object { #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 */ struct _pshared_object *pshobj$q_flink; /* flink to next pshared object */ #else unsigned __int64 pshobj$q_flink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_object *pshobj$q_blink; /* blink to previous pshared object */ #else unsigned __int64 pshobj$q_blink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_state *pshobj$q_state; /* state of pshared object */ #else unsigned __int64 pshobj$q_state; #endif int pshobj$l_type; /* pshared object type (CV or mutex) */ int pshobj$l_status; /* status of this pshared object */ int pshobj$l_waiters; /* count number of waiters */ int pshobj$l_recc; /* recursion depth */ unsigned __int64 pshobj$q_name; /* pointer to name */ PSHARED_OWNER pshobj$r_owner; /* embedded owner structure */ __union { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_object *pshobj$q_cv_friend; /* pointer to associated pshared object */ #else unsigned __int64 pshobj$q_cv_friend; #endif unsigned __int64 pshobj$q_obj_ref; /* reference counter */ } pshobj$r_ref_obj_overlay; int pshobj$l_abandoned; /* abandoned flag */ int pshobj$l_gstx; /* global section table index (GSTX) */ unsigned __int64 pshobj$q_gstx_offset; /* offset within global section table (GST) */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_wait *pshobj$q_wait_flink; /* flink to queue of waiters on this pshared object */ #else unsigned __int64 pshobj$q_wait_flink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_wait *pshobj$q_wait_blink; /* blink to queue of waiters on this pshared object */ #else unsigned __int64 pshobj$q_wait_blink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_master *pshobj$q_master; /* pointer to pshared master */ #else unsigned __int64 pshobj$q_master; #endif } PSHARED_OBJECT; #if !defined(__VAXC) #define pshobj$q_cv_friend pshobj$r_ref_obj_overlay.pshobj$q_cv_friend #define pshobj$q_obj_ref pshobj$r_ref_obj_overlay.pshobj$q_obj_ref #endif /* #if !defined(__VAXC) */ /* */ /* Pshared Hash Structure */ /* */ #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 _pshared_hash { #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 */ struct _pshared_object *pshhsh$q_flink; /* flink to pshared object */ #else unsigned __int64 pshhsh$q_flink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_object *pshhsh$q_blink; /* blink to pshared object */ #else unsigned __int64 pshhsh$q_blink; #endif } PSHARED_HASH; /* */ /* Pshared Master Structure */ /* */ #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 _pshared_master { #pragma __nomember_alignment int pshmas$l_status; /* pshared master status */ int pshmas$l_gstx; /* global section table index */ unsigned short int pshmas$w_mbo; /* must-be-one field */ unsigned char pshmas$b_type; /* structure type (DYN$C_PSH) */ unsigned char pshmas$b_subtype; /* structure subtype (DYN$C_PSH_MAS) */ int pshmas$l_obj_count; /* total number of pshared objects */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __int64 pshmas$q_size; /* size */ #pragma __nomember_alignment int pshmas$l_cv_count; /* number of pshared CV's */ int pshmas$l_mutex_count; /* number of pshared mutexes */ PZ_REGION pshmas$r_poolzone; /* embedded poolzone region structure (includes 1 poolzone) */ PZ_ZONE pshmas$r_zone [2]; /* embedded additional poolzone structures (two) */ TQE pshmas$r_tqe; /* embedded TQE structure */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_object *pshmas$q_obj_flink; /* flink to pshared object queue */ #else unsigned __int64 pshmas$q_obj_flink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_object *pshmas$q_obj_blink; /* blink to pshared object queue */ #else unsigned __int64 pshmas$q_obj_blink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_timout *pshmas$q_timout_flink; /* flink to timeout queue */ #else unsigned __int64 pshmas$q_timout_flink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_timout *pshmas$q_timout_blink; /* blink to timeout queue */ #else unsigned __int64 pshmas$q_timout_blink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_gbl *pshmas$q_gbl_flink; /* flink to queue of pshared global structures */ #else unsigned __int64 pshmas$q_gbl_flink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_gbl *pshmas$q_gbl_blink; /* blink to queue of pshared global structures */ #else unsigned __int64 pshmas$q_gbl_blink; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pshared_hash *pshmas$q_obj_hash_tbl; /* pointer to object hash table */ #else unsigned __int64 pshmas$q_obj_hash_tbl; #endif } PSHARED_MASTER; /* */ /* Pshared Array Structure */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _spl; #endif /* #ifdef __cplusplus */ #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 _pshared_array { #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 */ struct _pshared_master *pshary$q_master; /* long pointer to pshared master structure */ #else unsigned __int64 pshary$q_master; #endif #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 _spl *pshary$l_spinlock; /* short pointer to dynamic spinlock structure */ int pshary$l_spare; /* spare field */ } PSHARED_ARRAY; /* */ /* Pshared Constant Definitions */ /* */ #define PSH$C_BAD 0 #define PSH$C_MUTEX 1 #define PSH$C_CV 2 #define PSH$C_RWL 3 #define PSH$C_STATE_BAD 0 #define PSH$C_STATE_ACTIVE 1 #define PSH$C_STATE_DELETING 2 #define PSH$C_THREAD_AWAKENED 0 #define PSH$C_THREAD_INTERRUPTED 1 #define PSH$C_THREAD_SHOULD_TERMINATE 2 #define PSH$C_THREAD_TIMED_OUT 3 #define PSH$C_THREAD_RESTART 4 #define PSH$C_THREAD_FIRST_ATTEMPT 5 #define PSH$C_HOLDER_BAD 0 #define PSH$C_HOLDER_MUTEX 1 #define PSH$C_HOLDER_READ 2 #define PSH$C_HOLDER_WRITE 3 #define PSH$C_HOLDER_MUTEXWAIT 4 #define PSH$C_HOLDER_WRITEWAIT 5 #define PSH$C_HOLDER_CONDWAIT 6 #define PSH$C_RWM_LOCK 0 #define PSH$C_RWM_UNLOCK 0 #define PSH$C_RWM_TRY 1 #define PSH$C_RWM_READ 2 #define PSH$C_RWM_WRITE 4 #define PSH$C_RWM_FORCE 8 #define PSH$C_CV_WAIT 0 #define PSH$C_CV_SIGNAL 0 #define PSH$C_CV_BROADCAST 1 #define PSH$C_MOD_ABSTIME 1 #define PSH$C_MOD_FASTPATH 2 #define PSH$C_MOD_RECURSIVE 4 #define PSH$C_MOD_ERRORCHECK 8 #define PSH$C_OBJ_HASH_ENTRIES 1024 #define PSH$M_OBJ_HASH_MASK 1023 #pragma __required_pointer_size __save #pragma __required_pointer_size __long typedef PSHARED_DATA *PSHARED_DATA_PQ; /* long pointer to a pshared data structure */ typedef PSHARED_LOCK *PSHARED_LOCK_PQ; /* long pointer to a pshared lock structure */ typedef PSHARED_STATE *PSHARED_STATE_PQ; /* long pointer to a pshared state structure */ typedef PSHARED_OWNER *PSHARED_OWNER_PQ; /* long pointer to a pshared owner structure */ typedef PSHARED_GBL *PSHARED_GBL_PQ; /* long pointer to a pshared global structure */ typedef PSHARED_WAIT *PSHARED_WAIT_PQ; /* long pointer to a pshared wait structure */ typedef PSHARED_TIMOUT *PSHARED_TIMOUT_PQ; /* long pointer to a pshared timeout structure */ typedef PSHARED_OBJECT *PSHARED_OBJECT_PQ; /* long pointer to a pshared object structure */ typedef PSHARED_HASH *PSHARED_HASH_PQ; /* long pointer to a pshared hash structure */ typedef PSHARED_MASTER *PSHARED_MASTER_PQ; /* long pointer to a pshared master structure */ typedef PSHARED_ARRAY *PSHARED_ARRAY_PQ; /* long pointer to a pshared array structure */ #pragma __required_pointer_size __restore #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 /* __PSHDEF_LOADED */