/**/ /***************************************************************************/ /** **/ /** © 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:59 by OpenVMS SDL EV3-3 */ /* Source: 28-JUN-1993 14:52:47 $1$DGA7274:[LIB_H.SRC]VCADEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $VCADEF ***/ #ifndef __VCADEF_LOADED #define __VCADEF_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 /*+ */ /* */ /* VCA - Volume Cache Block. This block contains the specialized caches for */ /* a disk volume; to wit, the file ID cache, the extent cache, and the quota */ /* file cache. The file ID cache and extent cache are together in one block; */ /* the quota cache is located separately in another block. Both are pointed to */ /* by the VCB. */ /* */ /*- */ /**************************************************************************** */ /* WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! * */ /**************************************************************************** */ /* If you add/remove fields *before* SER_QFL then be sure to realign SER_QFL* */ /* to be QUADWORD aligned. The danger area is between *##### * */ /* * */ /* Also, *DO NOT* insert any fields between SER_QFL and SER_QBL * */ /* * */ /**************************************************************************** */ /* WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! * */ /**************************************************************************** */ #define VCA$M_FIDC_VALID 0x1 #define VCA$M_EXTC_VALID 0x2 #define VCA$M_FIDC_FLUSH 0x4 #define VCA$M_EXTC_FLUSH 0x8 #define VCA$C_QUEUE 16 /* Offset of queue header */ #define VCA$K_LENGTH 24 /* length of block header */ #define VCA$C_LENGTH 24 /* length of block header */ #define VCA$S_VCADEF 24 /* Old size name - synonym */ /* */ typedef struct _vca { /* */ /* Be careful between here.......... */ /* ################################################## */ /* */ void *vca$l_fidcache; /* pointer to file ID cache */ void *vca$l_extcache; /* pointer to extent cache */ unsigned short int vca$w_size; /* block size */ unsigned char vca$b_type; /* block type code */ __union { char vca$b_flags; /* cache flags */ __struct { unsigned vca$v_fidc_valid : 1; /* FID cache valid */ unsigned vca$v_extc_valid : 1; /* Extent cache valid */ unsigned vca$v_fidc_flush : 1; /* FID cache to be flushed */ unsigned vca$v_extc_flush : 1; /* Extent cache to be flushed */ unsigned vca$v_fill_2_ : 4; } vca$r_fill_1_; } vca$r_fill_0_; int vca$l_cache_space_used; /* Amount of space consumed/released */ void *vca$l_ser_qfl; /* Extent/FID cache */ void *vca$l_ser_qbl; /* serialization queue header */ /* */ /* .........and here */ /* ################################################## */ /* */ /* The file ID cache consists of the cache header, followed by a longword */ /* vector of file numbers, densely packed. */ /* */ } VCA; #if !defined(__VAXC) #define vca$b_flags vca$r_fill_0_.vca$b_flags #define vca$v_fidc_valid vca$r_fill_0_.vca$r_fill_1_.vca$v_fidc_valid #define vca$v_extc_valid vca$r_fill_0_.vca$r_fill_1_.vca$v_extc_valid #define vca$v_fidc_flush vca$r_fill_0_.vca$r_fill_1_.vca$v_fidc_flush #define vca$v_extc_flush vca$r_fill_0_.vca$r_fill_1_.vca$v_extc_flush #endif /* #if !defined(__VAXC) */ #define VCA$S_VCADEF1 52 /* Old size name - synonym */ typedef struct _vca1 { unsigned int vca$l_fidsize; /* number of entries allocated */ unsigned int vca$l_fidcount; /* number of entries present */ unsigned int vca$l_fidclkid; /* FID cache lock id. */ unsigned char vca$b_fidcacb [36]; /* FID cache blocking ACB */ void *vca$l_fidlist; /* first entry in list */ /* */ /* The extent cache consists of the cache header, followed by a quadword */ /* vector of extents, densely packed. Each quadword contains block count */ /* and starting LBN. */ /* */ } VCA1; #define VCA$S_VCADEF2 64 /* Old size name - synonym */ typedef struct _vca2 { unsigned int vca$l_extsize; /* number of entries allocated */ unsigned int vca$l_extcount; /* number of entries present */ unsigned int vca$l_exttotal; /* total number of blocks contained in cache */ unsigned int vca$l_extlimit; /* limit of volume to be cached, in percent/10 */ unsigned int vca$l_extclkid; /* EXT cache lock id. */ unsigned char vca$b_extcacb [36]; /* Extent cache blocking ACB. */ unsigned __int64 vca$q_extlist; /* first entry in list */ } VCA2; #define VCA$S_VCADEF3 8 /* Old size name - synonym */ typedef struct _vca3 { unsigned int vca$l_extblocks; /* number of blocks */ unsigned int vca$l_extlbn; /* starting LBN */ /* */ /* The quota cache consists of the cache header, followed by the cache */ /* entries. Each cache entry is a block as defined below. */ /* */ } VCA3; #define VCA$M_CACHEVALID 0x1 #define VCA$M_CACHEFLUSH 0x2 #define VCA$S_VCADEF4 92 /* Old size name - synonym */ typedef struct _vca4 { unsigned int vca$l_quosize; /* number of entries allocated */ unsigned int vca$l_quoclkid; /* whole cache lock ID */ char vca$$$_fill_3 [3]; /* 2nd longword & block size & type */ __union { char vca$b_quocflags; /* cache flags */ __struct { unsigned vca$v_cachevalid : 1; /* cache is valid */ unsigned vca$v_cacheflush : 1; /* cache is to be flushed */ unsigned vca$v_fill_5_ : 6; } vca$r_fill_4_; } vca$r_fill_3_; unsigned int vca$l_quolru; /* current LRU counter */ unsigned char vca$b_quoacb [36]; /* ACB to deliver blocking AST */ unsigned char vca$b_quoflushacb [36]; /* ACB to deliver cache flush AST */ void *vca$l_quolist; /* start of entries */ } VCA4; #if !defined(__VAXC) #define vca$b_quocflags vca$r_fill_3_.vca$b_quocflags #define vca$v_cachevalid vca$r_fill_3_.vca$r_fill_4_.vca$v_cachevalid #define vca$v_cacheflush vca$r_fill_3_.vca$r_fill_4_.vca$v_cacheflush #endif /* #if !defined(__VAXC) */ #define VCA$M_QUOVALID 0x1 #define VCA$M_QUODIRTY 0x2 #define VCA$K_QUOLENGTH 28 /* length of quota cache entry */ #define VCA$C_QUOLENGTH 28 /* length of quota cache entry */ #define VCA$S_VCADEF5 28 /* Old size name - synonym */ typedef struct _vca5 { __struct { /* lock status block */ __union { unsigned short int vca$w_quostatus; /* $ENQ status */ unsigned short int vca$w_quoindex; /* index in cache of this entry */ } vca$r_quostatus_overlay; unsigned short int vca$w_quolrux; /* LRU index for entry */ unsigned int vca$l_quolkid; /* lock ID of cache entry */ unsigned char vca$l_quorecnum [3]; /* record number */ __union { unsigned char vca$b_quoflags; /* flags byte */ __struct { unsigned vca$v_quovalid : 1; /* valid entry is present */ unsigned vca$v_quodirty : 1; /* dirty flag */ unsigned vca$v_fill_8_ : 6; } vca$r_fill_7_; } vca$r_fill_6_; unsigned int vca$l_usage; /* current usage */ unsigned int vca$l_permquota; /* permanent quota */ unsigned int vca$l_overdraft; /* overdraft limit */ } vca$r_quolock; unsigned int vca$l_quouic; /* UIC */ } VCA5; #if !defined(__VAXC) #define vca$w_quostatus vca$r_quolock.vca$r_quostatus_overlay.vca$w_quostatus #define vca$w_quoindex vca$r_quolock.vca$r_quostatus_overlay.vca$w_quoindex #define vca$w_quolrux vca$r_quolock.vca$w_quolrux #define vca$l_quolkid vca$r_quolock.vca$l_quolkid #define vca$l_quorecnum vca$r_quolock.vca$l_quorecnum #define vca$b_quoflags vca$r_quolock.vca$r_fill_6_.vca$b_quoflags #define vca$v_quovalid vca$r_quolock.vca$r_fill_6_.vca$r_fill_7_.vca$v_quovalid #define vca$v_quodirty vca$r_quolock.vca$r_fill_6_.vca$r_fill_7_.vca$v_quodirty #define vca$l_usage vca$r_quolock.vca$l_usage #define vca$l_permquota vca$r_quolock.vca$l_permquota #define vca$l_overdraft vca$r_quolock.vca$l_overdraft #endif /* #if !defined(__VAXC) */ #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 /* __VCADEF_LOADED */