/**/ /***************************************************************************/ /** **/ /** © 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:02 by OpenVMS SDL EV3-3 */ /* Source: 26-AUG-2008 09:44:56 $1$DGA7274:[LIB_H.SRC]WBMDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $WBMDEF ***/ #ifndef __WBMDEF_LOADED #define __WBMDEF_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 #define WBM$K_MAX_BITMAPS 12 #define WBM$K_MAX_BITMAPS_GROUP1 6 #define WBM$K_MAX_BITMAPS_GROUP2 12 #define WBM$K_MAX_NAMLEN 64 #define WBMSG$K_MAX_SET_RQSTS 9 /* based on the max msg size in cluster.sdl */ #define WBM$K_LWORDS_PER_BUFF 27 /* based on the max msg size in cluster.sdl */ #define WBM$M_VERSION 15 #define WBM$K_MSG_V1 1 #define WBM$K_CLU_FAC_V1 127 #ifndef __NEW_STARLET #define __NEW_STARLET #define __NEW_STARLET_LOCALDEF #endif #include #include #ifdef __NEW_STARLET_LOCALDEF #undef __NEW_STARLET #undef __NEW_STARLET_LOCALDEF #endif /*+ */ /* Flags argument to $START_BITMAP */ /*- */ #define WBM$M_GROUP1 0x1 #define WBM$M_GROUP2 0x2 #define WBM$M_GROUP3 0x4 #define WBM$M_MINICOPY 0x100 #define WBM$M_HBMM 0x200 typedef union _startdef { __struct { unsigned wbm$v_group1 : 1; /* Use first group of bitmap slots */ unsigned wbm$v_group2 : 1; /* Use second group of bitmap slots */ unsigned wbm$v_group3 : 1; /* Use all bitmap slots */ unsigned wbm$v_fill_3_to_7 : 5; /* unused */ unsigned wbm$v_minicopy : 1; /* This is a minicopy bitmap */ unsigned wbm$v_hbmm : 1; /* This is a hbmm bitmap */ unsigned wbm$v_unused : 22 /** WARNING: bitfield array has been reduced to a string **/ ; /* Reserved flags */ } wbm$r_startdef_bits; unsigned int wbm$l_startdef_overlay; /* Longword overlay */ } STARTDEF; #if !defined(__VAXC) #define wbm$v_group1 wbm$r_startdef_bits.wbm$v_group1 #define wbm$v_group2 wbm$r_startdef_bits.wbm$v_group2 #define wbm$v_group3 wbm$r_startdef_bits.wbm$v_group3 #define wbm$v_fill_3_to_7 wbm$r_startdef_bits.wbm$v_fill_3_to_7 #define wbm$v_minicopy wbm$r_startdef_bits.wbm$v_minicopy #define wbm$v_hbmm wbm$r_startdef_bits.wbm$v_hbmm #define wbm$v_unused wbm$r_startdef_bits.wbm$v_unused #endif /* #if !defined(__VAXC) */ /*+ */ /* POLICY argument to $START_BITMAP */ /*- */ typedef union _policydef { __struct { unsigned char wbm_pol$b_sub_group; /* pointer to sub_group */ unsigned char wbm_pol$b_amccnt; /* pointer to amccnt */ unsigned char wbm_pol$b_dmtcnt; /* HBMM_DMT */ unsigned char wbm_pol$b_unused; /* Spare */ } wbm_pol$r_policy_overlay; unsigned int wbm_pol$l_policy_overlay; /* Longword overlay */ } POLICYDEF; #if !defined(__VAXC) #define wbm_pol$b_sub_group wbm_pol$r_policy_overlay.wbm_pol$b_sub_group #define wbm_pol$b_amccnt wbm_pol$r_policy_overlay.wbm_pol$b_amccnt #define wbm_pol$b_dmtcnt wbm_pol$r_policy_overlay.wbm_pol$b_dmtcnt #define wbm_pol$b_unused wbm_pol$r_policy_overlay.wbm_pol$b_unused #endif /* #if !defined(__VAXC) */ /*+ */ /* Get info item codes */ /*- */ #define WBM$_BITMAP_NAME 1 #define WBM$_LOCAL_HANDLE 2 #define WBM$_CREATE_SYSTIME 3 #define WBM$_CLUSTER_SIZE 4 #define WBM$_BITMAP_SIZE 5 #define WBM$_MASTER_CSID 6 #define WBM$_DELETE_RQST 7 #define WBM$_STOPPED 8 #define WBM$_REFCNT 9 #define WBM$_MASTER_BITS_SET 10 #define WBM$_LOCAL_BITS_SET 11 #define WBM$_SUB_GROUP 12 #define WBM$_AMCCNT 13 #define WBM$_UNIT 14 #define WBM$_INDEX 15 #define WBM$_DMTCNT 16 #define WBM$_BITMAP_TYPE 17 #define WBM$K_MAX_BMI_ITEMS 17 #define WBM$S_BITMAP_NAME 64 #define WBM$S_LOCAL_HANDLE 4 #define WBM$S_CREATE_SYSTIME 8 #define WBM$S_CLUSTER_SIZE 2 #define WBM$S_BITMAP_SIZE 4 #define WBM$S_MASTER_CSID 4 #define WBM$S_DELETE_RQST 1 #define WBM$S_STOPPED 1 #define WBM$S_REFCNT 2 #define WBM$S_MASTER_BITS_SET 4 #define WBM$S_LOCAL_BITS_SET 4 #define WBM$S_SUB_GROUP 1 #define WBM$S_AMCCNT 1 #define WBM$S_UNIT 4 #define WBM$S_INDEX 1 #define WBM$S_DMTCNT 1 #define WBM$S_BITMAP_TYPE 2 /*+ */ /* Msging identifiers */ /*- */ #define WBM$K_INIT 1 #define WBM$K_CREATE 2 #define WBM$K_DELETE 3 #define WBM$K_START 4 #define WBM$K_STOP 5 #define WBM$K_GET_INFO 6 #define WBM$K_SCAN 7 #define WBM$K_CHECK 8 #define WBM$K_SET 9 #define WBM$K_SET_NAME 10 #define WBM$K_PACK_SET 11 #define WBM$K_INFO 12 #define WBM$K_WRTLCK 13 #define WBM$K_UNWRTLCK 14 #define WBM$K_TEST 15 #define WBM$K_MSG_MODE 16 /*+ */ /* Opcom level constants */ /*- */ #define WBM$K_OPCOM_LOW 0 #define WBM$K_OPCOM_MED 1 /*+ */ /* Deletion flags */ /*- */ #define WBM$K_DEL_SING 1 #define WBM$K_DEL_ALL 2 #define WBM$K_DEL_RQST 3 /*+ */ /* Write lock state codes */ /*- */ #define WBM$K_CWL_NOLCK 1 #define WBM$K_CWL_NL 2 #define WBM$K_CWL_CR 3 #define WBM$K_CWL_CW 4 #define WBM$K_CWL_PR 5 /*+ */ /* WBIL - write bitmap itemlist */ /*- */ #define WBIL$S_WBILDEF 142 #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 _wbil { #pragma __nomember_alignment unsigned char wbil$b_count; /* count of items in the item list */ unsigned char wbil$b_func_rqst [7]; /* one byte for each of the item codes */ unsigned short int wbil$w_name_len; /* storage for name length */ unsigned short int wbil$w_create_systime_len; /* storage for time length */ unsigned short int wbil$w_bits_set_len; /* storage for master bits set field */ unsigned short int wbil$w_master_csid_len; /* storage for master csid length */ unsigned short int wbil$w_cluster_size_len; /* storage for cluster size length */ unsigned short int wbil$w_delete_rqst_len; /* storage for delete request length */ unsigned short int wbil$w_stopped_len; /* storage for stopped length */ unsigned char wbil$b_name_buf [64]; /* buffer for bitmap name */ unsigned __int64 wbil$q_create_systime; /* storage for timestamp */ unsigned int wbil$l_bits_set; /* storage for number of bits set */ unsigned int wbil$l_master_csid; /* storage for csid */ unsigned short int wbil$w_cluster_size; /* storage for cluster size */ unsigned char wbil$b_delete_rqst; /* storage for delete request bit */ unsigned char wbil$b_stopped; /* storage for stopped bit */ unsigned short int wbil$w_sub_group_len; /* storage for subgroup length */ unsigned short int wbil$w_amccnt_len; /* storage for amccnt length */ unsigned short int wbil$w_refcnt_len; /* storage for refcntlength */ unsigned short int wbil$w_unit_len; /* storage for unit length */ unsigned short int wbil$w_index_len; /* storage for index length */ unsigned short int wbil$w_dmtcnt_len; /* storage for dmtcnt length */ unsigned short int wbil$w_bitmap_type_len; /* storage for bitmap_type length */ unsigned char wbil$b_sub_group; /* storage for sub_group */ unsigned char wbil$b_amccnt; /* storage for amccnt */ unsigned int wbil$l_unit; /* storage for unit */ unsigned short int wbil$w_refcnt; /* storage for refcnt */ unsigned char wbil$b_index; /* storage for index */ unsigned char wbil$b_dmtcnt; /* storage for dmtcnt */ unsigned short int wbil$w_bitmap_type; /* storage for bitmap_type */ unsigned char wbil$b_func_rqst_ext [10]; /* one byte for each of the item codes */ char wbil$b_fill_0_ [2]; } WBIL; /*+ */ /* BMIL - write bitmap itemlist */ /*- */ #define BMIL$S_BMILDEF 360 #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 _bmil { #pragma __member_alignment ILE3 bmil$r_itemlist_entry [18]; /* array of item list entries */ unsigned short int bmil$w_retlen_entry [18]; /* Array of RETLEN values */ /* Space for item data */ unsigned char bmil$r_data [108]; } BMIL; /*+ */ /* WBMH -- WBM Bitmap handle */ /*- */ typedef struct _wbmh { __union { unsigned int wbmh$l_wbmh; __struct { unsigned short int wbmh$w_idx; /* index into WBM handle array */ unsigned short int wbmh$w_seq; /* sequence # for bitmap identification */ } wbmh$r_overlay; } wbmh$r_handle; } WBMH; #if !defined(__VAXC) #define wbmh$l_wbmh wbmh$r_handle.wbmh$l_wbmh #define wbmh$r_overlay wbmh$r_handle.wbmh$r_overlay #define wbmh$w_idx wbmh$r_overlay.wbmh$w_idx #define wbmh$w_seq wbmh$r_overlay.wbmh$w_seq #endif /* #if !defined(__VAXC) */ /*+ */ /* WBM_LCK -- WBM lock context block */ /*- */ #define WBM_LCK$S_WBM_LCKDEF 48 typedef struct _wbm_lck { LKSB wbm_lck$r_lksb; /* Lock status block for the LVB validation lock */ unsigned int wbm_lck$l_size; /* size of the allocated context block */ unsigned int wbm_lck$l_lck_seq; /* sequence counter for the lock state */ WBMH wbm_lck$r_wbmh; /* handle for associated wbme */ unsigned int wbm_lck$r_res_dsc [3]; /* starting address for the resource name descriptor */ } WBM_LCK; /*+ */ /* WBMH_ENTRY -- WBM entry in the handle array */ /*- */ #define WBMH_ENTRY$S_WBMH_ENTRYDEF 8 #ifdef __cplusplus /* Define structure prototypes */ struct _wbmb; #endif /* #ifdef __cplusplus */ typedef struct _wbmh_entry { #pragma __nomember_alignment __union { struct _wbmb *wbmh_entry$ps_wbmb; /* address of a wbmb */ unsigned short int wbmh_entry$w_next_idx; /* contains the idx of the next available entry */ } wbmh_entry$r_overlay1; __union { __union { unsigned int wbmh_entry$l_bm_info; __struct { unsigned short int wbmh_entry$w_seq; /* sequence number of the bitmap */ unsigned char wbmh_entry$b_idx; /* index idextifying this WBME within its WBMB */ char wbmh_entry$b_fill_1; /* fill to next longword */ } wbmh_entry$r_fill_2_; } wbmh_entry$r_fill_1_; __union { unsigned int wbmh_entry$l_wbmh_en_type; __struct { unsigned short int wbmh_entry$w_size; /* Structure size in QUADWORDS */ unsigned char wbmh_entry$b_type; /* WBM structure type */ unsigned char wbmh_entry$b_subtype; /* WBMH_ARRAY subtype */ } wbmh_entry$r_fill_4_; } wbmh_entry$r_fill_3_; } wbmh_entry$r_overlay2; } WBMH_ENTRY; #if !defined(__VAXC) #define wbmh_entry$ps_wbmb wbmh_entry$r_overlay1.wbmh_entry$ps_wbmb #define wbmh_entry$w_next_idx wbmh_entry$r_overlay1.wbmh_entry$w_next_idx #define wbmh_entry$l_bm_info wbmh_entry$r_overlay2.wbmh_entry$r_fill_1_.wbmh_entry$l_bm_info #define wbmh_entry$w_seq wbmh_entry$r_overlay2.wbmh_entry$r_fill_1_.wbmh_entry$r_fill_2_.wbmh_entry$w_seq #define wbmh_entry$b_idx wbmh_entry$r_overlay2.wbmh_entry$r_fill_1_.wbmh_entry$r_fill_2_.wbmh_entry$b_idx #define wbmh_entry$b_fill_1 wbmh_entry$r_overlay2.wbmh_entry$r_fill_1_.wbmh_entry$r_fill_2_.wbmh_entry$b_fill_1 #define wbmh_entry$l_wbmh_en_type wbmh_entry$r_overlay2.wbmh_entry$r_fill_3_.wbmh_entry$l_wbmh_en_type #define wbmh_entry$w_size wbmh_entry$r_overlay2.wbmh_entry$r_fill_3_.wbmh_entry$r_fill_4_.wbmh_entry$w_size #define wbmh_entry$b_type wbmh_entry$r_overlay2.wbmh_entry$r_fill_3_.wbmh_entry$r_fill_4_.wbmh_entry$b_type #define wbmh_entry$b_subtype wbmh_entry$r_overlay2.wbmh_entry$r_fill_3_.wbmh_entry$r_fill_4_.wbmh_entry$b_subtype #endif /* #if !defined(__VAXC) */ /*+ */ /* WBLVB -- Write Bitmap Lock Value Block Overlay */ /*- */ #define WBLVB$S_WBLVBDEF 15 #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 _wblvb { #pragma __nomember_alignment __union { unsigned int wblvb$l_csid; /* cluster system id */ __struct { unsigned short int wblvb$w_csid_idx; /* slot idx */ unsigned short int wblvb$w_csid_seq; /* sequence number */ } wblvb$r_fill_6_; } wblvb$r_fill_5_; WBMH wblvb$r_wbmh; /* bitmap handle */ unsigned int wblvb$l_maxblock; /* max block from the master's vu ucb */ unsigned short int wblvb$w_cluster; /* Cluster factor */ unsigned char wblvb$b_version; /* Protocol version (note: only low four bits) */ /* MAXMSG byte unsigned; maximum message size in quadwords FUTURE VERISON */ char wblvb$b_fill_7_; } WBLVB; #if !defined(__VAXC) #define wblvb$l_csid wblvb$r_fill_5_.wblvb$l_csid #define wblvb$w_csid_idx wblvb$r_fill_5_.wblvb$r_fill_6_.wblvb$w_csid_idx #define wblvb$w_csid_seq wblvb$r_fill_5_.wblvb$r_fill_6_.wblvb$w_csid_seq #endif /* #if !defined(__VAXC) */ /*+ */ /* WBM -- Actual bitmap structure and header to be allocated from memory (S2 or nonpaged pool) */ /*- */ #define WBM$C_LENGTH 124 #define WBM$K_LENGTH 124 #define WBM$S_WBMDEF 124 /* Old 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 _wbm { #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 */ unsigned int *wbm$pq_bitmap; /* longword pointer to address after this structure */ #else unsigned __int64 wbm$pq_bitmap; #endif unsigned int wbm$l_size; /* Structure size in bytes */ unsigned char wbm$b_type; /* WBM Structure type */ unsigned char wbm$b_subtype; /* Bitmap subtype */ unsigned short int wbm$w_cluster; /* cluster factor (#blocks/bit) */ unsigned char wbm$b_name [64]; /* identification string for the bitmap */ unsigned int wbm$l_xfer_cnt; /* count of longwords transfered for this bitmap */ unsigned int wbm$l_bits_set; /* count of bis set in the bitmap */ #pragma __member_alignment LKSB wbm$r_lksb; /* lock status block */ unsigned int wbm$l_name_len; /* length of name buffer */ unsigned char wbm$b_sub_group; /* Policy sub_group */ unsigned char wbm$b_amccnt; /* Policy AMCCNT */ unsigned short int wbm$w_refcnt; /* refcnt */ unsigned char wbm$b_dmtcnt; /* dmtcnt */ unsigned char wbm$b_spare_b; /* unused */ unsigned short int wbm$w_bitmap_type; /* bitmap_type */ char wbm$b_fill_8_ [4]; } WBM; /*+ */ /* WBME -- Bitmap entry structure */ /*- */ #define WBME$M_SLOT_INUSE 0x1 #define WBME$M_EXISTS 0x2 #define WBME$M_ACTIVE 0x4 #define WBME$M_MASTER 0x8 #define WBME$M_DELETE_RQST 0x10 #define WBME$M_INIT_PENDING 0x20 #define WBME$M_START_PENDING 0x40 #define WBME$M_CW_PENDING 0x80 #define WBME$S_WBMEDEF 110 #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 _wbme { #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 _wbm *wbme$pq_wbm; /* quadword pointer to wbm structure */ #else unsigned __int64 wbme$pq_wbm; #endif unsigned int wbme$q_time [2]; /* timestamp */ unsigned __int64 wbme$q_vapte; /* VAPTE for deallocation of S2 */ unsigned int wbme$l_bitmap_size; /* upward bound of the bitmap array (longwords) */ #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 void (*wbme$l_fpc)(); /* completion routine address */ __union { /* context parameter for the completion routine */ unsigned __int64 wbme$q_ctx1; unsigned int wbme$l_ctx1; } wbme$r_ctx_overlay; __union { /* WBME flags overlay */ unsigned int wbme$l_flags; /* flags */ __struct { /* flag bits */ unsigned wbme$v_slot_inuse : 1; /* indicates this wbme is in use */ unsigned wbme$v_exists : 1; /* indicates that a bitmap has been allocated(no guaranteed local caching) */ unsigned wbme$v_active : 1; /* indicates the state of a bitmap (1 = tracking writes / 0 = no write tracking) */ unsigned wbme$v_master : 1; /* indicates this WBME masters the bitmap */ unsigned wbme$v_delete_rqst : 1; /* indicates deletion requested but could not be completed as yet */ unsigned wbme$v_init_pending : 1; /* indicates WBME in the process of initialization */ unsigned wbme$v_start_pending : 1; /* indicates WBME in the process of activation */ unsigned wbme$v_cw_pending : 1; /* indicates CW conversion outstanding */ unsigned wbme$v_reserved_fb1 : 24; /* Filler */ } wbme$r_flag_bits; } wbme$r_flags_overlay; #pragma __member_alignment char wbme$b_lck_name [32]; /* lock name */ LKSB wbme$r_lksb; /* lock status block */ unsigned int wbme$l_lck_seq; /* CW lock sequence counter */ unsigned int wbme$l_maxblock; /* max block count of the associated device */ unsigned short int wbme$w_wbmh_idx; /* index into the WBM handle array identifying this WBME */ char wbme$b_fill_9_ [2]; } WBME; #if !defined(__VAXC) #define wbme$q_ctx1 wbme$r_ctx_overlay.wbme$q_ctx1 #define wbme$l_ctx1 wbme$r_ctx_overlay.wbme$l_ctx1 #define wbme$l_flags wbme$r_flags_overlay.wbme$l_flags #define wbme$v_slot_inuse wbme$r_flags_overlay.wbme$r_flag_bits.wbme$v_slot_inuse #define wbme$v_exists wbme$r_flags_overlay.wbme$r_flag_bits.wbme$v_exists #define wbme$v_active wbme$r_flags_overlay.wbme$r_flag_bits.wbme$v_active #define wbme$v_master wbme$r_flags_overlay.wbme$r_flag_bits.wbme$v_master #define wbme$v_delete_rqst wbme$r_flags_overlay.wbme$r_flag_bits.wbme$v_delete_rqst #define wbme$v_init_pending wbme$r_flags_overlay.wbme$r_flag_bits.wbme$v_init_pending #define wbme$v_start_pending wbme$r_flags_overlay.wbme$r_flag_bits.wbme$v_start_pending #define wbme$v_cw_pending wbme$r_flags_overlay.wbme$r_flag_bits.wbme$v_cw_pending #endif /* #if !defined(__VAXC) */ /*+ */ /* WBMB -- Main tracking structure for Bitmap code */ /*- */ #define WBMB$M_IGNORE_GROUP1 0x2 #define WBMB$M_IGNORE_GROUP2 0x4 #define WBMB$M_IGNORE_GROUP3 0x8 #define WBM$K_IGNORE_LOCAL 1 #define WBM$K_USE_LOCAL 2 #define WBMB$S_WBMBDEF 1552 #ifdef __cplusplus /* Define structure prototypes */ struct _mscp_ucb; struct _irp; struct _fkb; #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 _wbmb { #pragma __nomember_alignment struct _wbmb *wbmb$ps_flink; /* Flink for master WBMB list */ struct _wbmb *wbmb$ps_blink; /* Blink */ unsigned short int wbmb$w_size; /* Structure size in bytes */ unsigned char wbmb$b_type; /* WBM structure type */ unsigned char wbmb$b_subtype; /* WBMB subtype */ struct _mscp_ucb *wbmb$ps_ucb; /* Pointer to the associated UCB */ __union { /* WBM flags overlay */ unsigned short int wbmb$w_flags; /* flags */ __struct { /* 8 bit flag structure currently */ unsigned wbmb$v_reserved_fb1 : 16; /* Filler */ } wbmb$r_flag_bits; } wbmb$r_flags_overlay; unsigned char wbmb$b_init_outstanding; /* number of outstanding lock transitions */ char wbmb$b_fill_1; /* fill to next longword */ void (*wbmb$l_fpc)(); /* completion routine address */ unsigned int wbmb$l_ctx1; /* context parameter */ unsigned int wbmb$l_ctx2; /* context parameter */ unsigned int wbmb$l_delete_count; /* debug delete counter ??? remove ??? */ int wbmb$l_writes_in_progress_cnt; /* Count of outstanding writes */ __union { unsigned int wbmb$l_writelocked; __struct { char wbmb$b_sys_writelock_cnt; /* count of writelock requests by trusted system routines */ char wbmb$b_dcl_writelock_cnt; /* count of writelock requests from DCL */ unsigned short int wbmb$w_fill_16; /* extra */ } wbmb$r_fill_11_; } wbmb$r_fill_10_; __union { unsigned __int64 wbmb$q_writelocked_irp_list; /* linked list of stalled irps */ __struct { struct _irp *wbmb$ps_irp_flink; struct _irp *wbmb$ps_irp_blink; } wbmb$r_fill_13_; } wbmb$r_fill_12_; __union { __int64 wbmb$q_writelocked_notify; /* list of fork blocks to be activated when the write lock request completes */ __struct { struct _fkb *wbmb$ps_fkb_flink; struct _fkb *wbmb$ps_fkb_blink; } wbmb$r_fill_15_; } wbmb$r_fill_14_; LKSB wbmb$r_cwl_lksb_local; /* lock status block for CR-CW lock */ LKSB wbmb$r_cwl_lksb_wl; /* lock status block for PW lock */ char wbmb$b_cwl_lockname [32]; /* write lock resource name */ __struct { /* Descriptor for CWL_LOCKNAME */ unsigned short int wbmb$w_cwl_dsc_length; /* Length in bytes of CWL name string */ unsigned char wbmb$b_cwl_dsc_dtype; /* Data type (DSC$K_DTYPE_T) */ unsigned char wbmb$b_cwl_dsc_class; /* Storage class (DSC$K_CLASS_S) */ void *wbmb$a_cwl_dsc_pointer; /* Address of CWL name string (WBMB$B_CWL_LOCKNAME) */ } wbmb$r_cwl_dsc; void (*wbmb$l_cwl_completion_rtn)(); /* completion routine address */ __union { /* completion routine context */ unsigned __int64 wbmb$q_cwl_completion_context; __union { unsigned __int64 wbmb$q_two_ctx_params; __struct { unsigned int wbmb$l_cwl_completion_context1; unsigned int wbmb$l_cwl_completion_context2; } wbmb$r_fill_17_; } wbmb$r_fill_16_; } wbmb$r_ctx_overlay; unsigned char wbmb$b_cwl_local_state; /* DLM lock state for the CR-CW progression */ unsigned char wbmb$b_cwl_wl_state; /* DLM lock state for the PW lock */ unsigned short int wbmb$w_fill_2; /* DEBUG remove !!! */ unsigned int wbmb$l_set_cnt; /* debug counters remove !!! */ unsigned int wbmb$l_rem_set_cnt; /* debug counters remove !!! */ unsigned int wbmb$l_cache_hit_cnt; /* debug counters remove !!! */ __union { /* */ unsigned int wbmb$l_ignore_bitmap_mask; /* Mask of local bitmap groups to ignore */ __struct { /* Currently only 2 groups defined */ unsigned wbmb$v_fill_0 : 1; /* unused */ unsigned wbmb$v_ignore_group1 : 1; /* Ignore Group 1 local bitmaps */ unsigned wbmb$v_ignore_group2 : 1; /* Ignore Group 2 local bitmaps */ unsigned wbmb$v_ignore_group3 : 1; /* Ignore Group 3 local bitmaps */ unsigned wbmb$v_fill_4_to_31 : 28; /* unused */ } wbmb$r_ignore_bitmap_mask_bits; } wbmb$r_ignore_bitmap_mask; unsigned int wbmb$l_fill_99 [7]; /* spare - allocate new cells from here */ #pragma __member_alignment WBME wbmb$r_bitmap_entry [12]; /* array of WBME structures identifying bitmaps */ } WBMB; #if !defined(__VAXC) #define wbmb$w_flags wbmb$r_flags_overlay.wbmb$w_flags #define wbmb$l_writelocked wbmb$r_fill_10_.wbmb$l_writelocked #define wbmb$b_sys_writelock_cnt wbmb$r_fill_10_.wbmb$r_fill_11_.wbmb$b_sys_writelock_cnt #define wbmb$b_dcl_writelock_cnt wbmb$r_fill_10_.wbmb$r_fill_11_.wbmb$b_dcl_writelock_cnt #define wbmb$q_writelocked_irp_list wbmb$r_fill_12_.wbmb$q_writelocked_irp_list #define wbmb$ps_irp_flink wbmb$r_fill_12_.wbmb$r_fill_13_.wbmb$ps_irp_flink #define wbmb$ps_irp_blink wbmb$r_fill_12_.wbmb$r_fill_13_.wbmb$ps_irp_blink #define wbmb$q_writelocked_notify wbmb$r_fill_14_.wbmb$q_writelocked_notify #define wbmb$ps_fkb_flink wbmb$r_fill_14_.wbmb$r_fill_15_.wbmb$ps_fkb_flink #define wbmb$ps_fkb_blink wbmb$r_fill_14_.wbmb$r_fill_15_.wbmb$ps_fkb_blink #define wbmb$w_cwl_dsc_length wbmb$r_cwl_dsc.wbmb$w_cwl_dsc_length #define wbmb$b_cwl_dsc_dtype wbmb$r_cwl_dsc.wbmb$b_cwl_dsc_dtype #define wbmb$b_cwl_dsc_class wbmb$r_cwl_dsc.wbmb$b_cwl_dsc_class #define wbmb$a_cwl_dsc_pointer wbmb$r_cwl_dsc.wbmb$a_cwl_dsc_pointer #define wbmb$q_cwl_completion_context wbmb$r_ctx_overlay.wbmb$q_cwl_completion_context #define wbmb$q_two_ctx_params wbmb$r_ctx_overlay.wbmb$r_fill_16_.wbmb$q_two_ctx_params #define wbmb$l_cwl_completion_context1 wbmb$r_ctx_overlay.wbmb$r_fill_16_.wbmb$r_fill_17_.wbmb$l_cwl_completion_context1 #define wbmb$l_cwl_completion_context2 wbmb$r_ctx_overlay.wbmb$r_fill_16_.wbmb$r_fill_17_.wbmb$l_cwl_completion_context2 #define wbmb$l_ignore_bitmap_mask wbmb$r_ignore_bitmap_mask.wbmb$l_ignore_bitmap_mask #define wbmb$v_fill_0 wbmb$r_ignore_bitmap_mask.wbmb$r_ignore_bitmap_mask_bits.wbmb$v_fill_0 #define wbmb$v_ignore_group1 wbmb$r_ignore_bitmap_mask.wbmb$r_ignore_bitmap_mask_bits.wbmb$v_ignore_group1 #define wbmb$v_ignore_group2 wbmb$r_ignore_bitmap_mask.wbmb$r_ignore_bitmap_mask_bits.wbmb$v_ignore_group2 #define wbmb$v_ignore_group3 wbmb$r_ignore_bitmap_mask.wbmb$r_ignore_bitmap_mask_bits.wbmb$v_ignore_group3 #define wbmb$v_fill_4_to_31 wbmb$r_ignore_bitmap_mask.wbmb$r_ignore_bitmap_mask_bits.wbmb$v_fill_4_to_31 #endif /* #if !defined(__VAXC) */ /*+ */ /* WBML -- head structure for linking WBMB's */ /*- */ #define WBML$S_WBMLDEF 8 #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 _wbml { #pragma __nomember_alignment struct _wbmb *wbml$ps_flink; /* Flink for master WBMB list */ struct _wbmb *wbml$ps_blink; /* Blink */ } WBML; /*+ */ /* WBMCD -- Write bitmap connection descriptor entry */ /*- */ #define WBMCD$M_BUFFER_MODE 0x1 #define WBMCD$M_NODE_REMOVED 0x2 #define WBMCD$M_RES_ALLOC_PENDING 0x4 #define WBMCD$S_WBMCDDEF 96 #ifdef __cplusplus /* Define structure prototypes */ struct _irp; struct _cdrp; struct _wbm_ctx; #endif /* #ifdef __cplusplus */ #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 _wbmcd { #pragma __nomember_alignment struct _wbmcd *wbmcd$ps_flink; /* Flink */ struct _wbmcd *wbmcd$ps_blink; /* Blink */ __union { __union { /* WBM flags overlay */ unsigned int wbmcd$l_flags; __struct { /* 32 bit flag structure currently */ unsigned wbmcd$v_buffer_mode : 1; /* indicates packaging set messages mode */ unsigned wbmcd$v_node_removed : 1; /* node removed from cluster */ unsigned wbmcd$v_res_alloc_pending : 1; /* resource allocation and intialization pending */ unsigned wbmcd$v_reserved_fb1 : 29; /* Filler */ } wbmcd$r_flag_bits; } wbmcd$r_flags_overlay; __union { unsigned int wbmcd$l_wbmcd_type; __struct { unsigned short int wbmcd$w_size; /* Structure size in bytes */ unsigned char wbmcd$b_type; /* WBM */ unsigned char wbmcd$b_subtype; /* WBMCD_ARRAY */ } wbmcd$r_fill_19_; } wbmcd$r_fill_18_; } wbmcd$r_type_ovrly; __union { unsigned int wbmcd$l_csid; /* cluster system id */ __struct { unsigned short int wbmcd$w_csid_idx; /* slot idx */ unsigned short int wbmcd$w_csid_seq; /* sequence number */ } wbmcd$r_fill_21_; } wbmcd$r_fill_20_; struct _irp *wbmcd$ps_irp_flink; /* Queue head for IRP's waiting on a resouce CDRP/RSPID/MSGBUF */ struct _irp *wbmcd$ps_irp_blink; /* Blink */ unsigned __int64 wbmcd$q_interval_end; /* end of sampling interval for dynamic message switching */ struct _cdrp *wbmcd$ps_cdrp; /* pointer to CDRP for set bitmap */ unsigned int wbmcd$l_msg_per_int; /* count of the total number of messages sent during this interval */ unsigned short int wbmcd$w_rqst_per_buf; /* count of the number of set request in the buffer */ char wbmcd$b_fill_22_ [6]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif struct _wbm_ctx *wbmcd$ps_wbm_ctx_flink; /* Queue head for wbm_ctx's associated with this connection */ #pragma __nomember_alignment struct _wbm_ctx *wbmcd$ps_wbm_ctx_blink; /* Blink */ unsigned __int64 wbmcd$q_setbit_per_int; /* Count of setbit per wbm_msg_interval. */ unsigned __int64 wbmcd$q_msg_sent_single; /* Messages sent in single mode. */ unsigned __int64 wbmcd$q_msg_sent_buf_partial; /* Partially populated messages sent in buffered mode */ unsigned __int64 wbmcd$q_msg_sent_buf_full; /* Fully populated messages sent in buffered mode */ unsigned __int64 wbmcd$q_mode_trans_cnt; /* No. of Transitions between single and buffered mode */ } WBMCD; #if !defined(__VAXC) #define wbmcd$l_flags wbmcd$r_type_ovrly.wbmcd$r_flags_overlay.wbmcd$l_flags #define wbmcd$v_buffer_mode wbmcd$r_type_ovrly.wbmcd$r_flags_overlay.wbmcd$r_flag_bits.wbmcd$v_buffer_mode #define wbmcd$v_node_removed wbmcd$r_type_ovrly.wbmcd$r_flags_overlay.wbmcd$r_flag_bits.wbmcd$v_node_removed #define wbmcd$v_res_alloc_pending wbmcd$r_type_ovrly.wbmcd$r_flags_overlay.wbmcd$r_flag_bits.wbmcd$v_res_alloc_pending #define wbmcd$l_wbmcd_type wbmcd$r_type_ovrly.wbmcd$r_fill_18_.wbmcd$l_wbmcd_type #define wbmcd$w_size wbmcd$r_type_ovrly.wbmcd$r_fill_18_.wbmcd$r_fill_19_.wbmcd$w_size #define wbmcd$b_type wbmcd$r_type_ovrly.wbmcd$r_fill_18_.wbmcd$r_fill_19_.wbmcd$b_type #define wbmcd$b_subtype wbmcd$r_type_ovrly.wbmcd$r_fill_18_.wbmcd$r_fill_19_.wbmcd$b_subtype #define wbmcd$l_csid wbmcd$r_fill_20_.wbmcd$l_csid #define wbmcd$w_csid_idx wbmcd$r_fill_20_.wbmcd$r_fill_21_.wbmcd$w_csid_idx #define wbmcd$w_csid_seq wbmcd$r_fill_20_.wbmcd$r_fill_21_.wbmcd$w_csid_seq #endif /* #if !defined(__VAXC) */ /*+ */ /* WBM_CTX -- Write bitmap setbit Send context */ /*- */ #define WBM_CTX$S_WBM_CTXDEF 130 #define WBM_CTX$C_LENGTH 130 #define WBM_CTX$K_LENGTH 130 #ifdef __cplusplus /* Define structure prototypes */ struct _cdrp; struct _irp; #endif /* #ifdef __cplusplus */ #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 _wbm_ctx { #pragma __nomember_alignment struct _wbm_ctx *wbm_ctx$ps_flink; /* Flink */ struct _wbm_ctx *wbm_ctx$ps_blink; /* Blink */ __union { unsigned int wbm_ctx$l_wbm_ctx; __struct { unsigned short int wbm_ctx$w_size; /* Structure size in bytes */ unsigned char wbm_ctx$b_type; /* WBM */ unsigned char wbm_ctx$b_subtype; /* WBM_CTX */ } wbm_ctx$r_fill_24_; } wbm_ctx$r_fill_23_; struct _cdrp *wbm_ctx$ps_cdrp; /* pointer to CDRP for set bitmap */ unsigned int wbm_ctx$l_irp_count; /* count of the number of IRPs associated with this context */ struct _irp *wbm_ctx$ps_irp_array [9]; /* Array of IRP's associated with this CDRP/wbm_ctx. */ unsigned short int wbm_ctx$w_seqio_flg; /* To store the seqio_flag for each IRP. */ unsigned int wbm_ctx$l_rem_handle_array [9]; /* Array of remote handles */ unsigned int wbm_ctx$l_lcl_handle_array [9]; /* Array of local handles */ char wbm_ctx$b_fill_25_ [2]; } WBM_CTX; #if !defined(__VAXC) #define wbm_ctx$l_wbm_ctx wbm_ctx$r_fill_23_.wbm_ctx$l_wbm_ctx #define wbm_ctx$w_size wbm_ctx$r_fill_23_.wbm_ctx$r_fill_24_.wbm_ctx$w_size #define wbm_ctx$b_type wbm_ctx$r_fill_23_.wbm_ctx$r_fill_24_.wbm_ctx$b_type #define wbm_ctx$b_subtype wbm_ctx$r_fill_23_.wbm_ctx$r_fill_24_.wbm_ctx$b_subtype #endif /* #if !defined(__VAXC) */ /*+ */ /* WBM_DATA -- Write bitmap global data block */ /*- */ #define WBM_DATA$M_SHADOW_CAPABLE 0x1 #define WBM_DATA$M_TQE_ENABLED 0x2 #define WBM_DATA$S_WBM_DATADEF 40 #define WBM_DATA$C_LENGTH 40 #define WBM_DATA$K_LENGTH 40 #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 _wbm_data { #pragma __nomember_alignment __union { unsigned int wbm_data$l_version; /* write bitmap code version (will be accessed directly by shadowing */ __struct { unsigned short int wbm_data$w_major_ver; /* major version */ unsigned short int wbm_data$w_minor_ver; /* minor version */ } wbm_data$r_fill_27_; } wbm_data$r_fill_26_; __union { /* WBM Global status flags */ unsigned int wbm_data$gl_status; __struct { /* 32 bit flag structure currently */ unsigned wbm_data$v_shadow_capable : 1; /* indicates node capable of performing WBM functionality */ unsigned wbm_data$v_tqe_enabled : 1; /* indicates whether a TQE was queued to process the connection list */ unsigned wbm_data$v_reserved_fb1 : 30; /* Filler */ } wbm_data$r_status_bits; } wbm_data$r_status_overlay; unsigned short int wbm_data$w_size; /* Structure size in bytes */ unsigned char wbm_data$b_type; /* WBM structure type */ unsigned char wbm_data$b_subtype; /* WBM_DATA subtype */ struct _wbmcd *wbm_data$gl_connections; /* pointer to an array of connection descriptor entries */ __union { unsigned int wbm_data$gq_cnxlistn [2]; /* Doubly linked list of connection descriptors sending N message */ __struct { struct _wbmcd *wbm_data$ps_cln_flink; struct _wbmcd *wbm_data$ps_cln_blink; } wbm_data$r_fill_29_; } wbm_data$r_fill_28_; struct _wbmh_entry *wbm_data$gl_wbmh_array; /* address of the WBM handle array */ unsigned int wbm_data$l_sf_msg_sent; /* total number of immediate bitmap update messages sent */ unsigned int wbm_data$l_tqe_msg_sent; /* total number of timer-driven bitmap update messages sent */ unsigned int wbm_data$l_cwcancel; /* counter for number of times we hit the CW lock cancellation hack */ } WBM_DATA; #if !defined(__VAXC) #define wbm_data$l_version wbm_data$r_fill_26_.wbm_data$l_version #define wbm_data$w_major_ver wbm_data$r_fill_26_.wbm_data$r_fill_27_.wbm_data$w_major_ver #define wbm_data$w_minor_ver wbm_data$r_fill_26_.wbm_data$r_fill_27_.wbm_data$w_minor_ver #define wbm_data$gl_status wbm_data$r_status_overlay.wbm_data$gl_status #define wbm_data$v_shadow_capable wbm_data$r_status_overlay.wbm_data$r_status_bits.wbm_data$v_shadow_capable #define wbm_data$v_tqe_enabled wbm_data$r_status_overlay.wbm_data$r_status_bits.wbm_data$v_tqe_enabled #define wbm_data$gq_cnxlistn wbm_data$r_fill_28_.wbm_data$gq_cnxlistn #define wbm_data$ps_cln_flink wbm_data$r_fill_28_.wbm_data$r_fill_29_.wbm_data$ps_cln_flink #define wbm_data$ps_cln_blink wbm_data$r_fill_28_.wbm_data$r_fill_29_.wbm_data$ps_cln_blink #endif /* #if !defined(__VAXC) */ #ifdef ALPHA # ifdef __INITIAL_POINTER_SIZE # pragma __required_pointer_size __save /* Save current pointer size */ # pragma __required_pointer_size 64 /* Pointers are 64-bits */ typedef struct _wbm * WBM_PQ; /* Long pointer to a WBM structure. */ typedef struct _wbm ** WBM_PPQ; /* Long pointer to a WBM structure. */ typedef struct _wblvb *WBLVB_PQ; /* Long pointer to a WBLVB structure. */ # pragma __required_pointer_size __restore /* Return to previous pointer size */ # else typedef unsigned __int64 LKSB_PQ; /* Same size as a 64-bit pointer to an LKSB */ typedef unsigned __int64 LKSB_PPQ; /* Same size as a 64-bit pointer to a pointer to an LKSB */ typedef unsigned __int64 WBM_PQ; typedef unsigned __int64 WBM_PPQ; typedef unsigned __int64 WBLVB_PQ; # endif #endif #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 /* __WBMDEF_LOADED */