/**/ /***************************************************************************/ /** **/ /** © 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:27:03 by OpenVMS SDL EV3-3 */ /* Source: 28-JUL-2005 10:19:37 $1$DGA7274:[LIB_H.SRC]WCBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $WCBDEF ***/ #ifndef __WCBDEF_LOADED #define __WCBDEF_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 /*+ */ /* WCB - WINDOW CONTROL BLOCK */ /* */ /* THERE IS A WINDOW CONTROL BLOCK FOR EACH FILE ACCESSED BY A PROCESS. */ /* IT CONTAINS MAPPING INFORMATION SUCH THAT A LARGE PERCENTAGE OF VIRTUAL */ /* FILE I/O CAN BE MAPPED FROM VIRTUAL TO LOGICAL BLOCK NUMBERS WITHOUT */ /* HAVING TO READ THE RESPECTIVE FILE HEADER. */ /*- */ #define WCB$M_READ 0x1 #define WCB$M_WRITE 0x2 #define WCB$M_NOTFCP 0x4 #define WCB$M_SHRWCB 0x8 #define WCB$M_OVERDRAWN 0x10 #define WCB$M_COMPLETE 0x20 #define WCB$M_CATHEDRAL 0x40 #define WCB$M_EXPIRE 0x80 #define WCB$M_CONTROL 0x1000 #define WCB$M_NO_READ_DATA 0x2000 #define WCB$K_MAP 80 /* MAP POINTERS START HERE */ #define WCB$C_MAP 80 /* MAP POINTERS START HERE */ #define WCB$K_LENGTH 80 /* LENGTH OF STANDARD WCB SANS POINTERS */ #define WCB$C_LENGTH 80 /* LENGTH OF STANDARD WCB SANS POINTERS */ /* NOTE THAT VIRTUAL MAPPING */ #define WCB$S_WCBDEF 104 /* Old size name - synonym */ #ifdef __cplusplus /* Define structure prototypes */ struct _ucb; struct _ssio_sc; struct _fcb; struct _rvt; #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 _wcb { #pragma __nomember_alignment struct _wcb *wcb$l_wlfl; /* WINDOW LIST FORWARD LINK */ struct _wcb *wcb$l_wlbl; /* WINDOW LIST BACKWARD LINK */ unsigned short int wcb$w_size; /* SIZE OF WINDOW BLOCK IN BYTES */ unsigned char wcb$b_type; /* STRUCTURE TYPE OF WCB */ __union { unsigned char wcb$b_access; /* ACCESS CONTROL BYTE */ __struct { unsigned wcb$v_read : 1; /* READ ACCESS ALLOWED (1=YES) */ unsigned wcb$v_write : 1; /* WRITE ACCESS ALLOWED (1=YES) */ unsigned wcb$v_notfcp : 1; /* FILE NOT ACCESSED BY FCP IF SET */ unsigned wcb$v_shrwcb : 1; /* SHARED WINDOW */ unsigned wcb$v_overdrawn : 1; /* FILE ACCESSOR HAS OVERDRAWN HIS QUOTA */ unsigned wcb$v_complete : 1; /* SET WINDOW MAPS ENTIRE FILE */ unsigned wcb$v_cathedral : 1; /* LARGE, COMPLEX WINDOW (SIC) TO MAP */ /* FILE COMPLETELY */ unsigned wcb$v_expire : 1; /* FILE EXPIRATION DATE MAY NEED TO BE SET */ } wcb$r_access_bits; } wcb$r_access_overlay; unsigned int wcb$l_pid; /* PROCESS ID OF ACCESSOR PROCESS */ unsigned int wcb$l_refcnt; /* REFERENCE COUNT FOR SHARED WINDOW */ struct _ucb *wcb$l_orgucb; /* ADDRESS OF ORIGINAL UCB FROM CCB */ __union { unsigned int wcb$l_acon; /* ACCESS CONTROL INFORMATION */ /* NOTE - THESE BITS TRACK THE BITS */ /* IN FIB$L_ACCTL */ __struct { unsigned wcb$v_nowrite : 1; /* NO OTHER WRITERS */ unsigned wcb$v_dlock : 1; /* ENABLE DEACCESS LOCK */ unsigned wcb$$_fill_1 : 2; /* UNUSED */ unsigned wcb$v_spool : 1; /* SPOOL FILE ON CLOSE */ unsigned wcb$v_writeck : 1; /* ENABLE WRITE CHECK */ unsigned wcb$v_seqonly : 1; /* SEQUENTIAL ONLY ACCESS */ unsigned wcb$v_snapshot : 1; /* SNAPSHOT REVALIDATION PENDING */ unsigned wcb$v_writeac : 1; /* WRITE ACCESS */ unsigned wcb$v_readck : 1; /* ENABLE READ CHECK */ unsigned wcb$v_noread : 1; /* NO OTHER READERS */ unsigned wcb$v_notrunc : 1; /* NO TRUNCATES */ unsigned wcb$v_control : 1; /* CONTROL ACCESS TO FILE */ unsigned wcb$v_no_read_data : 1; /* NO READ ACCESS TO FILE DATA */ unsigned wcb$v_fill_2 : 2; /* ALIGNMENT WITH ACON_BITS1 below */ } wcb$r_acon_bits0; __struct { unsigned wcb$$_fill_3 : 2; /* THE FOLLOWING FIELDS OVERLAY THE FIRST */ /* UNUSED FLAG IN WCB$W_ACON ABOVE (FILL_1). */ unsigned wcb$v_noacclock : 1; /* NO ACCESS LOCK CHECKING */ unsigned wcb$v_ssio : 1; /* File is open for SSIO access. */ unsigned wcb$$_fill_4 : 10; unsigned wcb$v_readinit : 1; /* A READINIT WAS DONE OVER THIS CHANNEL */ unsigned wcb$v_write_turn : 1; /* FORCE WINDOW TURN ON WRITES */ } wcb$r_acon_bits1; } wcb$r_acon_overlay; struct _ssio_sc *wcb$ps_ssio_sc; /* Pointer to SSIO Stream Context (if SSIO access) */ unsigned int wcb$l_nmap; /* NUMBER OF MAPPING POINTERS */ struct _fcb *wcb$l_fcb; /* ADDRESS OF FCB */ struct _rvt *wcb$l_rvt; /* ADDRESS OF RELATIVE VOLUME TABLE */ void *wcb$l_link; /* LINK TO NEXT WINDOW SEGMENT */ unsigned __int64 wcb$q_opentime; /* Creation time of WCB */ unsigned int wcb$l_reads; /* Count of read I/Os */ unsigned int wcb$l_writes; /* Count of write I/Os */ unsigned int wcb$l_split_io; /* Count of split I/Os */ unsigned int wcb$l_assist_io; /* Count of file system assisted I/Os */ int wcb$l_fill_5; /* Longword pad and spare space */ unsigned int wcb$l_stvbn; /* STARTING VBN MAPPED BY WINDOW */ /* NEEDS P1_COUNT IMMEDIATELY */ /* FOLLOWING STVBN */ __union { __struct { unsigned short int wcb$w_p1_count; /* TMP */ char wcb$b_fill_8 [10]; /* PADDING */ } wcb$r_p1_tmp; __struct { unsigned int wcb$l_p1_count; /* COUNT FIELD OF FIRST POINTER */ unsigned int wcb$l_p1_lbn; /* LBN FIELD OF SECOND POINTER */ unsigned int wcb$l_p1_rvn; /* RVN OF FIRST POINTER */ } wcb$r_p1_fields; __struct { unsigned __int64 wcb$q_deliq; /* DELETE PENDIONG QUEUE */ char wcb$b_fill_7 [4]; } wcb$r_delq_fields; } wcb$r_p1_overlay; unsigned int wcb$l_p2_count; /* COUNT FIELD OF SECOND POINTER */ unsigned int wcb$l_p2_lbn; /* LBN FIELD OF FIRST POINTER */ unsigned int wcb$l_p2_rvn; /* RVN OF SECOND POINTER */ /* FORMAT OF RETRIEVAL POINTER */ } WCB; #if !defined(__VAXC) #define wcb$b_access wcb$r_access_overlay.wcb$b_access #define wcb$v_read wcb$r_access_overlay.wcb$r_access_bits.wcb$v_read #define wcb$v_write wcb$r_access_overlay.wcb$r_access_bits.wcb$v_write #define wcb$v_notfcp wcb$r_access_overlay.wcb$r_access_bits.wcb$v_notfcp #define wcb$v_shrwcb wcb$r_access_overlay.wcb$r_access_bits.wcb$v_shrwcb #define wcb$v_overdrawn wcb$r_access_overlay.wcb$r_access_bits.wcb$v_overdrawn #define wcb$v_complete wcb$r_access_overlay.wcb$r_access_bits.wcb$v_complete #define wcb$v_cathedral wcb$r_access_overlay.wcb$r_access_bits.wcb$v_cathedral #define wcb$v_expire wcb$r_access_overlay.wcb$r_access_bits.wcb$v_expire #define wcb$l_acon wcb$r_acon_overlay.wcb$l_acon #define wcb$v_nowrite wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_nowrite #define wcb$v_dlock wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_dlock #define wcb$v_spool wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_spool #define wcb$v_writeck wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_writeck #define wcb$v_seqonly wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_seqonly #define wcb$v_snapshot wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_snapshot #define wcb$v_writeac wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_writeac #define wcb$v_readck wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_readck #define wcb$v_noread wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_noread #define wcb$v_notrunc wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_notrunc #define wcb$v_control wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_control #define wcb$v_no_read_data wcb$r_acon_overlay.wcb$r_acon_bits0.wcb$v_no_read_data #define wcb$v_noacclock wcb$r_acon_overlay.wcb$r_acon_bits1.wcb$v_noacclock #define wcb$v_ssio wcb$r_acon_overlay.wcb$r_acon_bits1.wcb$v_ssio #define wcb$v_readinit wcb$r_acon_overlay.wcb$r_acon_bits1.wcb$v_readinit #define wcb$v_write_turn wcb$r_acon_overlay.wcb$r_acon_bits1.wcb$v_write_turn #define wcb$w_p1_count wcb$r_p1_overlay.wcb$r_p1_tmp.wcb$w_p1_count #define wcb$l_p1_count wcb$r_p1_overlay.wcb$r_p1_fields.wcb$l_p1_count #define wcb$l_p1_lbn wcb$r_p1_overlay.wcb$r_p1_fields.wcb$l_p1_lbn #define wcb$l_p1_rvn wcb$r_p1_overlay.wcb$r_p1_fields.wcb$l_p1_rvn #define wcb$q_deliq wcb$r_p1_overlay.wcb$r_delq_fields.wcb$q_deliq #endif /* #if !defined(__VAXC) */ #define WCB$K_MAP_PTR_LENGTH 12 #define WCB$C_MAP_PTR_LENGTH 12 #define WCB$S_WCBDEF1 12 /* Old size name - synonym */ typedef struct _wcb1 { unsigned int wcb$l_count; /* COUNT FIELD */ unsigned int wcb$l_lbn; /* LBN FIELD */ unsigned int wcb$l_rvn; /* RVN FIELD */ } WCB1; #define WCB$S_WCBDEF2 13 /* Old size name - synonym */ typedef struct _wcb2 { /* WARNING: aggregate has origin of -12 */ /* WARNING: aggregate element "wcb$l_prevcount" ignored */ /* WARNING: aggregate element "wcb$l_prevlbn" ignored */ /* WARNING: aggregate element "wcb$l_prevrvn" ignored */ /* RETRIEVAL POINTER FORMAT */ char wcb$$_fill_6; } WCB2; #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 /* __WCBDEF_LOADED */