/**/ /***************************************************************************/ /** **/ /** © 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:03 by OpenVMS SDL EV3-3 */ /* Source: 16-MAR-2004 14:03:51 $1$DGA7274:[LIB_H.SRC]VCCDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $VCCDEF ***/ #ifndef __VCCDEF_LOADED #define __VCCDEF_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 /* */ /* CFCB - Cache File Control Block */ /* */ /* There is one CFCB for each cacheable file. The Cache File Control */ /* Block contains the information necessary for consistent data caching */ /* in a VAXcluster. The FCB contains the address of the CFCB. */ /* */ #define CFCB$M_SEQ 0x1 #define CFCB$M_CONFLICT 0x2 #define CFCB$M_WRITE 0x4 #define CFCB$M_NOLOCK 0x8 #define CFCB$M_BUSY 0x10 #define CFCB$M_DELAYBLKAST 0x20 #define CFCB$M_DELAYCMPLAST 0x40 #define CFCB$M_DISBLKFRK 0x80 #define CFCB$M_DISCMPLFRK 0x100 #define CFCB$M_LIMBO 0x200 #define CFCB$M_BYPASS 0x400 #define CFCB$M_TRUNCATE 0x800 #define CFCB$M_DELETE 0x1000 #define CFCB$M_NOPRESERVE 0x2000 #define CFCB$K_LENGTH 168 #define CFCB$S_CFCBDEF 168 /* Old size name - synonym */ #ifdef __cplusplus /* Define structure prototypes */ struct _acb; struct _ht; struct _fcb; struct _vcb; #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 _cfcb { /* head of CFCB is an ACB which we use as a FKB */ #pragma __nomember_alignment __union { #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif char cfcb$b_frk_fcb [48]; /* Embedded fork block */ #pragma __nomember_alignment __struct { struct _acb *cfcb$l_astqfl; /* AST queue FLINK */ struct _acb *cfcb$l_astqbl; /* AST queue BLINK */ unsigned short int cfcb$w_size; /* size of CFCB in bytes */ unsigned char cfcb$b_type; /* type is VCC, a subtypable structure */ unsigned char cfcb$b_subtype; /* subtype for CFCB and RMODE for ACB */ unsigned int cfcb$l_ast_pid; /* either accesser/deacceser or server */ void (*cfcb$l_ast_addr)(); /* address to resume process */ unsigned int cfcb$l_ast_prm; /* the parameter */ /* no KAST field needed */ /* end of ACB */ } cfcb$r_frk_struct; } cfcb$r_frk_overlay; /* cells to control access to and type of cache mode lock */ __union { /* lock status block */ unsigned __int64 cfcb$q_lksb; /* whole LKSB */ __struct { unsigned short int cfcb$w_lksb_status; /* completion status */ unsigned short int cfcb$w_reserved; unsigned int cfcb$l_lockid; /* lockid of cache mode lock */ } cfcb$r_lksb_fields; } cfcb$r_lksb_overlay; unsigned int cfcb$l_wait_pid; /* PID waiting for cache mode lock access */ int (*cfcb$l_wait_addr)(); /* address at which to resume process */ unsigned int cfcb$l_wait_prm; /* AST parameter for waiting process */ unsigned int cfcb$l_writers; /* number of reasons to keep write lock */ struct _ht *cfcb$l_hashtable; /* address of hash table data structure */ __union { /* */ unsigned int cfcb$l_status; /* */ __struct { /* */ unsigned cfcb$v_seq : 1; /* file is being accessed sequentially */ /* these next 3 bits must be together */ /* they indicate the current cache mode */ unsigned cfcb$v_conflict : 1; /* this node's access conflicts with another node */ unsigned cfcb$v_write : 1; /* set for read/write, clear read only */ unsigned cfcb$v_nolock : 1; /* no cache mode lock held */ /* status bits for accessing the cache mode lock */ unsigned cfcb$v_busy : 1; /* cache mode lock is being modified */ unsigned cfcb$v_delayblkast : 1; /* BLKAST arrived while CFCB busy */ unsigned cfcb$v_delaycmplast : 1; /* CMPLAST arrived while CFCB busy */ unsigned cfcb$v_disblkfrk : 1; /* disable future blocking forks */ unsigned cfcb$v_discmplfrk : 1; /* disable future completion forks */ /* OTHER STATUS BITS */ unsigned cfcb$v_limbo : 1; /* set if CFCB in LIMBO */ unsigned cfcb$v_bypass : 1; /* If set don't cache IO requests */ unsigned cfcb$v_truncate : 1; /* If set, need to truncate cache */ unsigned cfcb$v_delete : 1; unsigned cfcb$v_nopreserve : 1; /* If set delete cache at $DEACCESS */ unsigned cfcb$v_fill_0_ : 2; } cfcb$r_status_bits; } cfcb$r_status_overlay; /* counts of interesting things */ unsigned int cfcb$l_vread; /* virtual reads to this file */ unsigned int cfcb$l_readhit; /* read hits to this file */ unsigned int cfcb$l_vwrite; /* virtual writes to this file */ unsigned int cfcb$l_writehit; /* write hits to this file */ unsigned int cfcb$l_around; /* read or writes "around" this cache */ unsigned int cfcb$l_blockcnt; /* data blocks allocated to this file */ unsigned int cfcb$l_clcnt; /* cache lines allocated to this file */ unsigned int cfcb$l_ioerrors; /* number of I/O errors for this file */ unsigned int cfcb$l_lastvbn; /* last VBN read/written */ unsigned int cfcb$l_hivbn; /* largest VBN ever cached for this file */ struct _fcb *cfcb$l_fcb; /* FCB associated with this CFCB */ unsigned int cfcb$l_ocnt; /* Count of Reasons not to delete CFCB */ unsigned int cfcb$l_disable; /* number of reasons to disable caching */ /* of this file even if cache mode lock */ /* will allow caching */ /* zero means caching is enabled */ unsigned int cfcb$l_lkq_status; /* status of ENQ/DEQ request (not final) */ unsigned int cfcb$l_time; /* Time put CFCB put in LIMBO */ unsigned __int64 cfcb$q_limbo; /* Queue of CFCB that are in LIMBO */ unsigned int cfcb$l_cid; /* Cache ID */ struct _vcb *cfcb$l_cvcb; /* VCB address for this file */ char cfcb$t_lockname [12]; /* XQP lockname */ } CFCB; #if !defined(__VAXC) #define cfcb$l_astqfl cfcb$r_frk_overlay.cfcb$r_frk_struct.cfcb$l_astqfl #define cfcb$l_astqbl cfcb$r_frk_overlay.cfcb$r_frk_struct.cfcb$l_astqbl #define cfcb$w_size cfcb$r_frk_overlay.cfcb$r_frk_struct.cfcb$w_size #define cfcb$b_type cfcb$r_frk_overlay.cfcb$r_frk_struct.cfcb$b_type #define cfcb$b_subtype cfcb$r_frk_overlay.cfcb$r_frk_struct.cfcb$b_subtype #define cfcb$l_ast_pid cfcb$r_frk_overlay.cfcb$r_frk_struct.cfcb$l_ast_pid #define cfcb$l_ast_addr cfcb$r_frk_overlay.cfcb$r_frk_struct.cfcb$l_ast_addr #define cfcb$l_ast_prm cfcb$r_frk_overlay.cfcb$r_frk_struct.cfcb$l_ast_prm #define cfcb$q_lksb cfcb$r_lksb_overlay.cfcb$q_lksb #define cfcb$w_lksb_status cfcb$r_lksb_overlay.cfcb$r_lksb_fields.cfcb$w_lksb_status #define cfcb$w_reserved cfcb$r_lksb_overlay.cfcb$r_lksb_fields.cfcb$w_reserved #define cfcb$l_lockid cfcb$r_lksb_overlay.cfcb$r_lksb_fields.cfcb$l_lockid #define cfcb$l_status cfcb$r_status_overlay.cfcb$l_status #define cfcb$v_seq cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_seq #define cfcb$v_conflict cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_conflict #define cfcb$v_write cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_write #define cfcb$v_nolock cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_nolock #define cfcb$v_busy cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_busy #define cfcb$v_delayblkast cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_delayblkast #define cfcb$v_delaycmplast cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_delaycmplast #define cfcb$v_disblkfrk cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_disblkfrk #define cfcb$v_discmplfrk cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_discmplfrk #define cfcb$v_limbo cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_limbo #define cfcb$v_bypass cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_bypass #define cfcb$v_truncate cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_truncate #define cfcb$v_delete cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_delete #define cfcb$v_nopreserve cfcb$r_status_overlay.cfcb$r_status_bits.cfcb$v_nopreserve #endif /* #if !defined(__VAXC) */ /* */ /* HT - Hash Table */ /* */ /* There is one hash table for each cacheable file. The Cache File Control */ /* Block contains the address of the hash table. Access requires owning the */ /* cache spin lock. */ #define HT$Q_HASHTABLE 24 /* start of hash table */ #define HT$S_HTDEF 24 /* 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 _ht { /* The cache line and hash table sizes are not constants. They may vary for */ /* different files. The size of each must be a power of two. The VBN is */ /* subdivided into bitfields based on the cache line size and the size of */ /* the hash table. The lowest bits, <0,CLSIZE-1> represent the offset in */ /* the cache line. Bits are the hash index. These */ /* fields are accessed via bitfield instructions and the values of CLSIZE */ /* and HASHSIZE are encoded to define bitfields NOT the actual size of the */ /* entity. */ #pragma __nomember_alignment unsigned int ht$l_clsize; /* encoded cache line size (see above) */ unsigned int ht$l_hashsize; /* encoded hash table size (see above) */ unsigned short int ht$w_size; /* size of hash table strcuture in bytes */ unsigned char ht$b_type; /* type is VCC, a subtypable structure */ unsigned char ht$b_subtype; /* subtype for HT */ unsigned int ht$l_entries; /* Entries in HT (if expansion ne 0 */ /* then actual number is ENTRIES*2) */ unsigned int ht$l_expansion; /* Highest Hash currently being */ /* expanded */ int ht$l_ht_fill; /* fill for alignment */ } HT; /* */ /* CL - Cache Line */ /* */ /* A Cache Line is used by the VAXcluster Cache to track per VBN information. */ /* The hash table in the CFCB points to cache lines. */ /* */ #define CL$M_WRITE 0x10000 #define CL$M_DELAYTRUNC 0x20000 #define CL$K_LENGTH 64 #define CL$S_CLDEF 64 /* 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 _cl { #pragma __nomember_alignment void *cl$l_flink; /* Equivalence class forward link */ void *cl$l_blink; /* Equivalence class back link */ unsigned short int cl$w_size; /* size of CL in bytes */ unsigned char cl$b_type; /* type is VCC, a subtypable structure */ unsigned char cl$b_subtype; /* subtype for CL */ unsigned int cl$l_entries; /* Number of Entries in Use */ unsigned int cl$l_expansion; /* Buckets being split */ unsigned int cl$l_time; /* Time CL last referenced */ unsigned int cl$l_firstvbn; /* first VBN in this cache line */ struct _cfcb *cl$l_cfcb; /* address of corresponding CFCB */ unsigned __int64 cl$q_lruentry; /* absolute queue entry in VCC$Q_LRULINE */ unsigned __int64 cl$q_valid; /* set if corresponding VBN data valid */ unsigned __int64 cl$q_dirty; /* set if corresponding VBN data */ /* needs to be written before block */ /* is reused */ __union { /* Cache Line lock, access VAs and data */ unsigned int cl$l_lock; /* looks just like mutex */ __struct { /* but uses cache spinlock not sched */ unsigned short int cl$w_count; /* Count of current accessers */ unsigned cl$v_write : 1; /* write in progress or pending */ unsigned cl$v_delaytrunc : 1; /* delete this line during unlock */ unsigned cl$v_fill_1_ : 6; } cl$r_lock_fields; } cl$r_lock_overlay; void *cl$l_va; /* virtual addresses for data blocks */ } CL; #if !defined(__VAXC) #define cl$l_lock cl$r_lock_overlay.cl$l_lock #define cl$w_count cl$r_lock_overlay.cl$r_lock_fields.cl$w_count #define cl$v_write cl$r_lock_overlay.cl$r_lock_fields.cl$v_write #define cl$v_delaytrunc cl$r_lock_overlay.cl$r_lock_fields.cl$v_delaytrunc #endif /* #if !defined(__VAXC) */ /* */ /* CPT - Cache I/O Page Table */ /* */ /* A range of sequential VBNs is not guarenteed to be virtually contiguous */ /* in the cache. Physical I/O requires the SVAPTE which maps the buffer. */ /* The cache builds a "fake" page table in this data structure and passes */ /* its virtual address as the SVAPTE. In addition some per I/O cache */ /* information is stored here rather than enlarge the IRP. */ /* */ #define CPT$L_PTE 32 /* start of PTEs(Must be QUAD Aligned) */ #define CPT$K_LENGTH 32 /* not counting size of VA array */ /* which is run time dependent */ #define CPT$S_CPTDEF 32 /* 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 _iocpt { __union { #pragma __nomember_alignment __int64 cpt$q_iova; /* Cache IO VA (64 Bits) */ __struct { int cpt$l_sva; /* Page IO SVAPTE */ } cpt$r_fill_3_; } cpt$r_fill_2_; unsigned short int cpt$w_size; /* size of CPT in bytes */ unsigned char cpt$b_type; /* type is VCC, a subtypable structure */ unsigned char cpt$b_subtype; /* subtype for CPT */ unsigned int cpt$l_ioextra; /* read ahead byte count */ unsigned int cpt$l_iovbn; /* cache I/O VBN */ unsigned int cpt$l_iobcnt; /* cache I/O byte count */ struct _cfcb *cpt$l_cfcb; /* CFCB address for this I/O */ unsigned int cpt$l_rhbcnt; /* read hit byte count */ /* real length equals IRP length */ } IOCPT; #if !defined(__VAXC) #define cpt$q_iova cpt$r_fill_2_.cpt$q_iova #define cpt$l_sva cpt$r_fill_2_.cpt$r_fill_3_.cpt$l_sva #endif /* #if !defined(__VAXC) */ /* */ /* CVCB - Cache Volume Control Block */ /* */ /* There is one of these structures for each ODS2 volume currently */ /* mounted by this node. It is used to permit detection of users */ /* that perform writes to volumes around the cache, so that the */ /* file caches concerned may be flushed. */ /* */ #define CVCB$M_ON 0x1 #define CVCB$M_MISMTCH 0x2 #define CVCB$M_DELETE 0x4 #define CVCB$M_BSY 0x8 #define CVCB$M_CONFLICT 0x10 #define CVCB$M_QIRP 0x20 #define CVCB$M_XFCLK 0x40 #define CVCB$K_LENGTH 152 #define CVCB$S_CVCBDEF 152 /* Old size name - synonym */ #ifdef __cplusplus /* Define structure prototypes */ struct _vcb; #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 _cvcb { #pragma __nomember_alignment void *cvcb$l_flink; void *cvcb$l_blink; unsigned short int cvcb$w_size; unsigned char cvcb$b_type; unsigned char cvcb$b_subtype; char cvcb$b_fill_4_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { char cvcb$b_frk_fcb [48]; /* Embedded fork block */ #pragma __nomember_alignment __struct { struct _fkb *cvcb$l_frk1; /* Fork Block */ struct _fkb *cvcb$l_frk2; /* Fork Block */ struct _fkb *cvcb$l_frk3; /* Fork Block */ struct _fkb *cvcb$l_frk4; /* Fork Block */ struct _fkb *cvcb$l_frk5; /* Fork Block */ struct _fkb *cvcb$l_frk6; /* Fork Block */ struct _fkb *cvcb$l_frk7; /* Fork Block */ struct _fkb *cvcb$l_frk8; /* Fork Block */ } cvcb$r_frk_struct; } cvcb$r_frk_overlay; struct _vcb *cvcb$l_vcb; /* VCB address */ unsigned int cvcb$l_cid; /* Cache ID (monatonicaly increasing) */ unsigned int cvcb$l_cluid; /* Cluster ID (similar to CID) */ __union { unsigned int cvcb$l_state; __struct { unsigned cvcb$v_on : 1; /* Set if cache enabled this Volume */ unsigned cvcb$v_mismtch : 1; /* Set if not CACHE SAFE Driver */ unsigned cvcb$v_delete : 1; /* Set if Deleteing this CVCB */ unsigned cvcb$v_bsy : 1; /* Set if State change in progress */ unsigned cvcb$v_conflict : 1; /* Set if MISMTCH Set somewhere in */ /* Cluster */ unsigned cvcb$v_qirp : 1; /* Set if IRP's Q'd waiting for */ /* Cluster Invalidate */ unsigned cvcb$v_xfclk : 1; /* Set if have Volume Interest Lock */ unsigned cvcb$v_fill_5_ : 1; } cvcb$r_state_bits; } cvcb$r_state_overlay; unsigned int cvcb$l_ocnt; /* Count of Reasons not to Delete CVCB */ unsigned int cvcb$l_mntct; /* VCB$W_MNTCT at last State Change */ unsigned __int64 cvcb$q_irp; /* Q for IRP's */ __union { /* lock status block */ unsigned __int64 cvcb$q_lksb; /* whole LKSB */ __struct { unsigned short int cvcb$w_lksb_status; /* completion status */ unsigned short int cvcb$w_reserved; unsigned int cvcb$l_lockid; /* lockid of Cache volume lock */ } cvcb$r_lksb_fields; } cvcb$r_lksb_overlay; __union { /* lock status block */ unsigned __int64 cvcb$q_intlksb; /* whole LKSB */ __struct { unsigned short int cvcb$w_intlksb_status; /* completion status */ unsigned short int cvcb$w_int_reserved; unsigned int cvcb$l_intlockid; /* lockid of Volume Interest lock */ } cvcb$r_intlksb_fields; } cvcb$r_intlksb_overlay; unsigned int cvcb$l_pool; /* Address for Pool in GET_VOL_LOCK */ unsigned int cvcb$l_seq; /* Cluster MEMSEQ for Node Bits */ unsigned int cvcb$l_bits; /* Node bits */ unsigned int cvcb$l_bits1; unsigned int cvcb$l_bits2; unsigned int cvcb$l_bits3; unsigned int cvcb$l_bits4; unsigned int cvcb$l_bits5; unsigned int cvcb$l_bits6; unsigned int cvcb$l_bits7; } CVCB; #if !defined(__VAXC) #define cvcb$l_frk1 cvcb$r_frk_overlay.cvcb$r_frk_struct.cvcb$l_frk1 #define cvcb$l_frk2 cvcb$r_frk_overlay.cvcb$r_frk_struct.cvcb$l_frk2 #define cvcb$l_frk3 cvcb$r_frk_overlay.cvcb$r_frk_struct.cvcb$l_frk3 #define cvcb$l_frk4 cvcb$r_frk_overlay.cvcb$r_frk_struct.cvcb$l_frk4 #define cvcb$l_frk5 cvcb$r_frk_overlay.cvcb$r_frk_struct.cvcb$l_frk5 #define cvcb$l_frk6 cvcb$r_frk_overlay.cvcb$r_frk_struct.cvcb$l_frk6 #define cvcb$l_frk7 cvcb$r_frk_overlay.cvcb$r_frk_struct.cvcb$l_frk7 #define cvcb$l_frk8 cvcb$r_frk_overlay.cvcb$r_frk_struct.cvcb$l_frk8 #define cvcb$l_state cvcb$r_state_overlay.cvcb$l_state #define cvcb$v_on cvcb$r_state_overlay.cvcb$r_state_bits.cvcb$v_on #define cvcb$v_mismtch cvcb$r_state_overlay.cvcb$r_state_bits.cvcb$v_mismtch #define cvcb$v_delete cvcb$r_state_overlay.cvcb$r_state_bits.cvcb$v_delete #define cvcb$v_bsy cvcb$r_state_overlay.cvcb$r_state_bits.cvcb$v_bsy #define cvcb$v_conflict cvcb$r_state_overlay.cvcb$r_state_bits.cvcb$v_conflict #define cvcb$v_qirp cvcb$r_state_overlay.cvcb$r_state_bits.cvcb$v_qirp #define cvcb$v_xfclk cvcb$r_state_overlay.cvcb$r_state_bits.cvcb$v_xfclk #define cvcb$q_lksb cvcb$r_lksb_overlay.cvcb$q_lksb #define cvcb$w_lksb_status cvcb$r_lksb_overlay.cvcb$r_lksb_fields.cvcb$w_lksb_status #define cvcb$w_reserved cvcb$r_lksb_overlay.cvcb$r_lksb_fields.cvcb$w_reserved #define cvcb$l_lockid cvcb$r_lksb_overlay.cvcb$r_lksb_fields.cvcb$l_lockid #define cvcb$q_intlksb cvcb$r_intlksb_overlay.cvcb$q_intlksb #define cvcb$w_intlksb_status cvcb$r_intlksb_overlay.cvcb$r_intlksb_fields.cvcb$w_intlksb_status #define cvcb$w_int_reserved cvcb$r_intlksb_overlay.cvcb$r_intlksb_fields.cvcb$w_int_reserved #define cvcb$l_intlockid cvcb$r_intlksb_overlay.cvcb$r_intlksb_fields.cvcb$l_intlockid #endif /* #if !defined(__VAXC) */ /* */ /* CACHE$GL_FLAGS is now used to select the cache type to be loaded. */ /* As such the previous flags definitions which only apply to VIOC */ /* should be considered obsolete. Only use the flags definition if you */ /* know what you are doing. */ /* */ /* Bits in SYSGEN parameter CACHE$GL_FLAGS */ /* This is actually 4 one byte sysgen parameters. */ /* CACHE$GB_FLAGS0 - user "visible" static prefix CACHE_TYPE$C */ /* CACHE$GB_FLAGS1 - user "visible" static prefix CACHE_FLAGS$V */ /* CACHE$GB_FLAGS2 */ /* CACHE$GB_FLAGS3 */ /* */ #define CACHE_TYPE$C_NOCACHE 0 /* No cache is loaded */ #define CACHE_TYPE$C_VIOC 1 /* Cache type is VIOC, Virtual I/O Cache (aka VCC) */ #define CACHE_TYPE$C_XFC 2 /* Cache type is XFC, Extended File Cache */ /* Define XFC control flag bits in CACHE$GL_FLAGS as flags and not constants. */ /* These are not present in V7.3 and below... */ /* The CACHE_TYPE$C values above remain for historical reasons. In future please use the */ /* bitfield values below... */ /* */ #define CACHE_FLAGS$M_VIOC 0x1 #define CACHE_FLAGS$M_XFC 0x2 #define CACHE_FLAGS$M_FLAG_NOT_USED 0xFC #define CACHE_FLAGS$M_XFC_PER_RAD_CACHE 0x100 typedef struct _cacheflags1 { __struct { unsigned cache_flags$v_vioc : 1; /* Load VIOC */ unsigned cache_flags$v_xfc : 1; /* Load XFC execlet */ unsigned cache_flags$v_flag_not_used : 6; /* pad bit definitions into position */ unsigned cache_flags$v_xfc_per_rad_cache : 1; /* Use XFC per RAD caching */ unsigned cache_flags$v_fill_6_ : 7; } cache_flags$r_flags1; } CACHEFLAGS1; #if !defined(__VAXC) #define cache_flags$v_vioc cache_flags$r_flags1.cache_flags$v_vioc #define cache_flags$v_xfc cache_flags$r_flags1.cache_flags$v_xfc #define cache_flags$v_xfc_per_rad_cache cache_flags$r_flags1.cache_flags$v_xfc_per_rad_cache #endif /* #if !defined(__VAXC) */ #define CACHE$M_ON 0x1 #define CACHE$M_PROTOCOL_ONLY 0x2 #define CACHE$M_READ_AHEAD 0x4 #define CACHE$M_UPDATE_ON_WRTE 0x8 #define CACHE$S_CACHEDEF 1 /* Old size name - synonym */ typedef struct _cacheflags { __struct { unsigned cache$v_on : 1; /* Turn on caching */ unsigned cache$v_protocol_only : 1; /* Run the cache protocal, but */ /* don't cache anything. */ unsigned cache$v_read_ahead : 1; /* Allow Read Ahead */ unsigned cache$v_update_on_wrte : 1; /* Update on Write Alogrithm */ unsigned cache$v_fill_7_ : 4; } cache$r_flags; } CACHEFLAGS; #if !defined(__VAXC) #define cache$v_on cache$r_flags.cache$v_on #define cache$v_protocol_only cache$r_flags.cache$v_protocol_only #define cache$v_read_ahead cache$r_flags.cache$v_read_ahead #define cache$v_update_on_wrte cache$r_flags.cache$v_update_on_wrte #endif /* #if !defined(__VAXC) */ /* Define bits in CACHE$GL_STATE */ /* */ #define CACHE_STATE$M_LBSY 0x1 #define CACHE_STATE$M_MBSY 0x2 #define CACHE_STATE$M_LOCK 0x4 #define CACHE_STATE$M_PAK 0x8 #define CACHE_STATE$M_ON 0x10 #define CACHE_STATE$M_IMG 0x20 #define CACHE_STATE$M_HETERO 0x40 #define CACHE_STATE$M_FLUSH 0x80 #define CACHE_STATE$M_UPDWRT 0x100 #define CACHE_STATE$M_RDAHD 0x200 #define CACHE_STATE$M_SAFE 0x400 #define CACHE_STATE$M_DATA 0x800 #define CACHE_STATE$M_USERSIZE 0x1000 #define CACHE_STATE$M_ENABLED 0x2000 #define CACHE_STATE$M_REDUCED 0x4000 #define CACHE_STATE$M_FULL 0x8000 #define CACHE_STATE$S_CACHESTATEDEF 2 /* Old size name - synonym */ typedef struct _cachestate { __struct { unsigned cache_state$v_lbsy : 1; /* Cache master lock busy */ unsigned cache_state$v_mbsy : 1; /* */ unsigned cache_state$v_lock : 1; /* Cache master lock acquired */ unsigned cache_state$v_pak : 1; /* VCC PAK enabled */ unsigned cache_state$v_on : 1; /* Cache enabled */ unsigned cache_state$v_img : 1; /* Image cache enabled */ unsigned cache_state$v_hetero : 1; /* Heterogenous cluster */ unsigned cache_state$v_flush : 1; /* Flush cache contents */ unsigned cache_state$v_updwrt : 1; /* Populate on update write only */ unsigned cache_state$v_rdahd : 1; /* Read ahead enabled */ unsigned cache_state$v_safe : 1; /* Cache safe derivers present */ unsigned cache_state$v_data : 1; /* Data cache enabled */ unsigned cache_state$v_usersize : 1; /* User has sized cache */ unsigned cache_state$v_enabled : 1; /* Caching enabled */ unsigned cache_state$v_reduced : 1; /* XFC is using Reduced Mode */ unsigned cache_state$v_full : 1; /* XFC is using Full Mode */ } cache_state$r_state; } CACHESTATE; #if !defined(__VAXC) #define cache_state$v_lbsy cache_state$r_state.cache_state$v_lbsy #define cache_state$v_mbsy cache_state$r_state.cache_state$v_mbsy #define cache_state$v_lock cache_state$r_state.cache_state$v_lock #define cache_state$v_pak cache_state$r_state.cache_state$v_pak #define cache_state$v_on cache_state$r_state.cache_state$v_on #define cache_state$v_img cache_state$r_state.cache_state$v_img #define cache_state$v_hetero cache_state$r_state.cache_state$v_hetero #define cache_state$v_flush cache_state$r_state.cache_state$v_flush #define cache_state$v_updwrt cache_state$r_state.cache_state$v_updwrt #define cache_state$v_rdahd cache_state$r_state.cache_state$v_rdahd #define cache_state$v_safe cache_state$r_state.cache_state$v_safe #define cache_state$v_data cache_state$r_state.cache_state$v_data #define cache_state$v_usersize cache_state$r_state.cache_state$v_usersize #define cache_state$v_enabled cache_state$r_state.cache_state$v_enabled #define cache_state$v_reduced cache_state$r_state.cache_state$v_reduced #define cache_state$v_full cache_state$r_state.cache_state$v_full #endif /* #if !defined(__VAXC) */ /* Define item codes for GET_STAT */ /* */ #define CACHE_ITEM$_LISTEND 0 /* List terminator */ #define CACHE_ITEM$_STATE 1 /* State flags */ #define CACHE_ITEM$_CACHE_MEMORY 2 /* Pages of cache memory */ #define CACHE_ITEM$_FREE_CACHE 3 /* Free page of cache memory */ #define CACHE_ITEM$_READ_HITS 4 /* Read hits */ #define CACHE_ITEM$_VIRT_READS 5 /* Virtual reads to cacheable files */ #define CACHE_ITEM$_VIRT_WRITES 6 /* Virtual writes to cacheable files */ #define CACHE_ITEM$_R_ARND_MOD 7 /* Read arounds du to modifier bits */ #define CACHE_ITEM$_R_ARND_SIZ 8 /* Read arounds due to size too large */ #define CACHE_ITEM$_W_ARND_MOD 9 /* Write arounds due to modifier bits */ #define CACHE_ITEM$_W_ARND_SIZ 10 /* Write arounds due to size too large */ #define CACHE_ITEM$_LIMBO_LEN 11 /* Length of limbo queue */ #define CACHE_ITEM$_MIN_CACHE_SIZE 12 /* Current lower bound on size of cache */ #define CACHE_ITEM$_MAX_CACHE_SIZE 13 /* Current upper bound on size of cache */ #define CACHE_ITEM$_MAX_CACHE_LIMIT 14 /* Upper limit set by boot-time PTE allocation */ #define CACHE_ITEM$_MAX_IO_SIZE 15 /* Largest IO XFC will cache */ #define CACHE_ITEM$_MAX_LOCKS 16 /* Maximum number of locks XFC can acquire locally */ #define CACHE_ITEM$_READAHEAD 17 /* Current value of VCC_READAHEAD SYSGEN param */ #define CACHE_ITEM$_WRITEBEHIND 18 /* Current value of VCC_WRITEBEHIND SYSGEN param */ #define CACHE_ITEM$_WRITE_DELAY 19 /* Current value of VCC_WRITE_DELAY SYSGEN param */ #define CACHE_ITEM$_VOLS_FXFC_MODE 20 /* Count of volumes currently in full XFC mode */ #define CACHE_ITEM$_VOLS_RXFC_MODE 21 /* Count of volumes currently in reduced XFC mode */ #define CACHE_ITEM$_VOLS_NC_MODE 22 /* Count of volumes currently in no-caching mode */ #define CACHE_ITEM$_OPEN_FILES 23 /* Count of open files with valid data in cache */ #define CACHE_ITEM$_UNSYNCHED_IOS 24 /* Count of IO's not synchronised with XFC cache */ #define CACHE_ITEM$_DELAYED_WRITES 25 /* Count of delayed writes since system startup */ #define CACHE_ITEM$_LOST_WRITES 26 /* Count of delayed writes discarded since system startup */ #define CACHE_ITEM$_FULL_BARRIERS 27 /* Count of outstanding full barriers currently in cache */ #define CACHE_ITEM$_PARTIAL_BARRIERS 28 /* Count of outstanding full barriers currently in cache */ #define CACHE_ITEM$_READS_AROUND 29 /* Count of all reads bypassing cache */ #define CACHE_ITEM$_WRITES_AROUND 30 /* Count of all writes bypassing cache */ #define CACHE_ITEM$_CURRENT_LOCKS 31 /* Count of locks held by cache */ #define CACHE_ITEM$_BARRIER_COUNT 32 /* Count of barriers inserted into cache since boot */ #define CACHE_ITEM$_SUPER_WRITES 33 /* Count of writes that supersede dirty data */ #define CACHE_ITEM$_NON_PAGED_POOL 34 /* Amount of non-paged pool cuurrently held by the cache */ #define CACHE_ITEM$_VOLS_PNC_MODE 35 /* Count of volumes in permanent no-caching mode */ #define CACHE_ITEM$_IOSIZE_ARRAYS 36 /* Arrays of IOs by size */ #define CACHE_ITEM$_TIME_LAST_RESET 37 /* Time since last reset of stats */ #define CACHE_ITEM$_TRACE_ENTRY 38 /* to get trace buffer record(s) */ #define CACHE_ITEM$_SET_TRACE_MASK 39 /* to set trace include/exclude mask */ #define CACHE_ITEM$_TRACE_RESET 40 /* to empty trace buffer */ #define CACHE_ITEM$_BLOCKS_READ 41 /* Total of blocks read from cache (hits + misses) */ #define CACHE_ITEM$_BLOCKS_FROM_CACHE 42 /* Total blocks satisfied from cache */ #define CACHE_ITEM$_BLOCKS_WRITTEN 43 /* Total blocks written (includes writethroughs + writearounds */ #define CACHE_ITEM$_MAX_VCC_ITEM 11 #define CACHE_ITEM$_MAX_XFC_ITEM 43 #define CACHE_ITEM$_MAX_ITEM 43 /* Values for item codes for CACHE$SET_STATVOL() and */ /* CACHE$SET_STATFILE(). */ #define CACHE_CONTROL$_RESET_STATISTICS 1 /* Reset statistics to zero */ #define CACHE_CONTROL$_SIZE_DISABLE 2 /* Disable extended statistics collection */ #define CACHE_CONTROL$_SIZE_ENABLE 3 /* Enable extended statistics collection */ #define CACHE_CONTROL$_FORCE_DEPOSE 4 /* Force depose of volume or file */ #define CACHE_CONTROL$_FORCE_NOCACHE 5 /* Force file to no cache state */ /* Define CVS (Cache Volume Statistics) for obtaining per volume statistics from XFC */ /* Values for CVS$L_CACHE_STATE: */ /* NOTE: coordinate changes with [XFC]XFCDEF.H */ #define CVS$C_NOCACHING 4096 /* Volume not cached */ #define CVS$C_REDUCEDXFC 4097 /* Volume in reduced XFC mode */ #define CVS$C_FULLXFC 4098 /* Volume in Full XFC mode */ #define CVS$C_PERMNOCACHING 4099 /* Volume permanently not cached */ #define CVS$K_VOLNAM_LEN 12 #define CVS$C_VOLNAM_LEN 12 #define CVS$K_HDRLEN 52 /* Length of header */ #define CVS$C_HDRLEN 52 /* */ /* NOTE: any changes or additions to the following fields or */ #define CVS$C_XFC_ARRAYSIZE 128 /* Size of array */ #define CVS$K_ORIG_ITEM_COUNT 31 #define CVS$C_ORIG_ITEM_COUNT 31 #define CVS$K_ITEM_COUNT 37 #define CVS$C_ITEM_COUNT 37 #define CVS$K_BASE_SIZE 348 #define CVS$C_BASE_SIZE 348 #define CVS$K_IO_ARRAY_SIZE 3112 #define CVS$C_IO_ARRAY_SIZE 3112 #ifdef __cplusplus /* Define structure prototypes */ struct _vcb; #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 _cvs { #pragma __nomember_alignment unsigned __int64 cvs$q_reserved1; /* unused; aligns type to byte 11 */ unsigned short int cvs$w_mbo; /* must be one */ unsigned char cvs$b_type; /* type is VCC, a subtypable structure */ unsigned char cvs$b_subtype; /* subtype is VCC_CVS */ unsigned int cvs$l_version; /* version of Cache Volume Statistics used by XFC */ unsigned int cvs$l_status; /* return status */ unsigned int cvs$l_cache_state; /* Volume caching state */ struct _vcb *cvs$l_vcb; /* address of Volume Control Block */ unsigned int cvs$l_itm_cnt; /* Number of quadword items to return */ unsigned int cvs$l_iosize_buffer_size; /* Size (bytes) of IO size stat buffer (0 if none requested) */ int *cvs$l_iosize_buffer; /* Address of IO size stat buffer */ char cvs$t_volnam [12]; /* blank filled volume name */ /* values MUST also be reflected in the CVB_STATS structure in [XFC]XFCDEF.H */ unsigned __int64 cvs$q_open_files; /* Open cached files */ unsigned __int64 cvs$q_closed_files; /* Closed cached files */ unsigned __int64 cvs$q_files_ever_opened; /* Files ever opened */ unsigned __int64 cvs$q_files_ever_deposed; /* Files ever deposed */ unsigned __int64 cvs$q_pages_allocated; /* Pages of memory currently held for the volume */ unsigned __int64 cvs$q_locks_acquired; /* Number of locks currently held for the volume */ unsigned __int64 cvs$q_totalqios; /* Total QIOs against this volume */ unsigned __int64 cvs$q_read_hits; /* read cache hits */ unsigned __int64 cvs$q_virtual_reads; /* virtual reads */ unsigned __int64 cvs$q_virtual_writes; /* " writes */ unsigned __int64 cvs$q_read_aheads; /* Read aheads */ unsigned __int64 cvs$q_read_throughs; /* Read throughs */ unsigned __int64 cvs$q_write_throughs; /* Write throughs */ unsigned __int64 cvs$q_read_around_count; /* Read arounds */ unsigned __int64 cvs$q_write_around_count; /* Write arounds */ unsigned __int64 cvs$q_read_around_mod; /* Read arounds due to modifier bits */ unsigned __int64 cvs$q_write_around_mod; /* Write arounds due to modifier bits */ unsigned __int64 cvs$q_read_around_size; /* Read arounds due to size too large */ unsigned __int64 cvs$q_write_around_size; /* Write arounds due to size too large */ unsigned __int64 cvs$q_write_behinds; /* Write behinds */ unsigned __int64 cvs$q_full_barriers; /* Number of full barriers in dep graph */ unsigned __int64 cvs$q_lost_writes; /* Writes lost due to disk errors */ unsigned __int64 cvs$q_unsynched_io_count; /* Count of unsynced I/Os */ unsigned __int64 cvs$q_partial_barriers; /* Number of partial barriers in dep graph */ unsigned __int64 cvs$q_barrier_count; /* Number of barrier calls made since boot-time */ unsigned __int64 cvs$q_synch_response_miss; /* Count of response time I/O misses */ unsigned __int64 cvs$q_asynch_response_miss; /* Count of response time I/O misses */ unsigned __int64 cvs$q_synch_response_tics; /* Sum of ticks for synch response time */ unsigned __int64 cvs$q_asynch_response_tics; /* Sum of ticks for asynch response time */ unsigned __int64 cvs$q_response_time; /* Overall Disk I/O response time */ unsigned __int64 cvs$q_cvb_last_reset; /* Time this array was last reset */ unsigned __int64 cvs$q_blocks_read; /* Total of blocks read from cache (hits + misses) */ unsigned __int64 cvs$q_blocks_from_cache; /* Total blocks satisfied from cache */ unsigned __int64 cvs$q_blocks_written; /* Total blocks written (includes writethroughs + writearounds */ unsigned __int64 cvs$q_files_truncated; /* Number of files truncated */ unsigned __int64 cvs$q_logical_io_count; /* Number of logical IOs */ unsigned __int64 cvs$q_vcml_blocking_asts; /* Number for volume deposes from a VCML blocking AST (logical IO in cluster) */ /* Add new individual stat fields above this line */ /* */ /* IO size array: */ unsigned __int64 cvs$q_read_blocksize [128]; /* Read Size stat array */ unsigned __int64 cvs$q_block_read_hits [128]; /* Read Hits stat array */ unsigned __int64 cvs$q_write_blocksize [128]; /* Write Size stat array */ unsigned __int64 cvs$q_writes128to255; /* Number of writes in 128-255 block range */ unsigned __int64 cvs$q_reads128to255; /* Number of reads in 128-255 block range */ unsigned __int64 cvs$q_large_writes; /* Number of writes greater than 255 blocks */ unsigned __int64 cvs$q_large_reads; /* Number of reads greater than 255 blocks */ unsigned __int64 cvs$q_time_last_reset; /* Time this array was last reset */ char cvs$b_fill_8_ [4]; } CVS; /* New CVS fields should be accompanied by an increment of the value of CACHE_VERSION$C_VCC_CVS */ /* below. */ #define CACHE_VERSION$_VCC_CVS 65536 /* Version number of CVS interface */ /* Define CFS (Cache File Statistics) for obtaining per file statistics from XFC */ /* Values for FILE_STATE (also on input to CACHE$GET_FIDS): */ #define CFS$K_OPEN 1 /* CFS$K_OPEN - file is open */ #define CFS$C_OPEN 1 /* CFS$C_OPEN - file is open */ #define CFS$K_CLOSED 2 /* CFS$K_CLOSED - file is closed */ #define CFS$C_CLOSED 2 /* CFS$C_CLOSED - file is closed */ /* Values for CFS$L_CACHE_STATE: */ /* NOTE: coordinate changes with [XFC]XFCDEF.H */ #define CFS$C_DEFAULT 8192 /* No active mode specified */ #define CFS$C_WRITETHROUGH 8193 /* File in writethrough mode */ #define CFS$C_WRITEBEHIND 8194 /* File in writebehind mode */ #define CFS$C_NOCACHING 8195 /* File is not cached */ #define CFS$K_HDRLEN 56 /* Length of header */ #define CFS$C_HDRLEN 56 /* */ /* NOTE: any changes or additions to the following stats fields */ #define CFS$C_XFC_ARRAYSIZE 128 /* Size of array */ #define CFS$K_ITEM_COUNT 20 #define CFS$C_ITEM_COUNT 20 #define CFS$K_BASE_SIZE 216 #define CFS$C_BASE_SIZE 216 #define CFS$K_IO_ARRAY_SIZE 3112 #define CFS$C_IO_ARRAY_SIZE 3112 #ifdef __cplusplus /* Define structure prototypes */ struct _vcb; #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 _cfs { #pragma __nomember_alignment unsigned __int64 cfs$q_reserved1; /* unused; aligns type to byte 11 */ unsigned short int cfs$w_mbo; /* must be one */ unsigned char cfs$b_type; /* type is VCC, a subtypable structure */ unsigned char cfs$b_subtype; /* subtype is VCC_CVS */ unsigned int cfs$l_version; /* version of Cache File Statistics used by XFC */ unsigned int cfs$l_status; /* return status */ unsigned int cfs$l_cache_state; /* File active caching state */ unsigned int cfs$l_file_state; /* Open/closed state */ unsigned int cfs$l_caching_disabled; /* Boolean */ struct _vcb *cfs$l_vcb; /* address of Volume Control Block */ unsigned __int64 cfs$q_fid; /* FID (last word unused) */ unsigned int cfs$l_itm_cnt; /* Number of quadword items to return */ unsigned int cfs$l_iosize_buffer_size; /* Size (bytes) of IO size stat buffer (0 if none requested) */ int *cfs$l_iosize_buffer; /* Address of IO size stat buffer */ /* MUST also be reflected in the CFB_STATS structure in [XFC]XFCDEF.H */ /* */ unsigned __int64 cfs$q_pages_allocated; /* Pages of memory currently held for the file */ unsigned __int64 cfs$q_totalqios; /* Total QIOs against this file */ unsigned __int64 cfs$q_read_hits; /* read cache hits */ unsigned __int64 cfs$q_virtual_reads; /* virtual reads */ unsigned __int64 cfs$q_virtual_writes; /* " writes */ unsigned __int64 cfs$q_read_aheads; /* Read aheads */ unsigned __int64 cfs$q_read_throughs; /* Read throughs */ unsigned __int64 cfs$q_write_throughs; /* Write throughs */ unsigned __int64 cfs$q_read_around_count; /* Read arounds */ unsigned __int64 cfs$q_write_around_count; /* Write arounds */ unsigned __int64 cfs$q_read_around_mod; /* Read arounds due to modifier bits */ unsigned __int64 cfs$q_write_around_mod; /* Write arounds due to modifier bits */ unsigned __int64 cfs$q_read_around_size; /* Read arounds due to size too large */ unsigned __int64 cfs$q_write_around_size; /* Write arounds due to size too large */ unsigned __int64 cfs$q_write_behinds; /* Write behinds */ unsigned __int64 cfs$q_unsynched_io_count; /* Count of unsynced I/Os */ unsigned __int64 cfs$q_lost_writes; /* Writes lost due to disk errors */ unsigned __int64 cfs$q_full_barriers; /* Number of full barriers in dep graph */ unsigned __int64 cfs$q_partial_barriers; /* Number of partial barriers in dep graph */ unsigned __int64 cfs$q_barrier_count; /* Number of barrier calls made since boot-time */ /* Add new individual stat fields above this line */ /* */ /* IO Size array: */ unsigned __int64 cfs$q_read_blocksize [128]; /* Read Size stat array */ unsigned __int64 cfs$q_block_read_hits [128]; /* Read Hits stat array */ unsigned __int64 cfs$q_write_blocksize [128]; /* Write Size stat array */ unsigned __int64 cfs$q_writes128to255; /* Number of writes in 128-255 block range */ unsigned __int64 cfs$q_reads128to255; /* Number of reads in 128-255 block range */ unsigned __int64 cfs$q_large_writes; /* Number of writes greater than 255 blocks */ unsigned __int64 cfs$q_large_reads; /* Number of reads greater than 255 blocks */ unsigned __int64 cfs$q_time_last_reset; /* Time this array was last reset */ } CFS; /* New CFS fields should be accompanied by an increment of the value of CACHE_VERSION$C_VCC_CFS */ /* below. */ #define CACHE_VERSION$_VCC_CFS 65536 /* Version number of CFS interface */ /* */ /* The following values should be loaded into the global cell */ /* CACHE$GL_PROTOCOL_VER to indicate which level of locking */ /* protocol is going to be used by the cache loaded at boot */ /* time. The protocol level being used by other members of */ /* the cluster can be found in the CSB's of the respective */ /* nodes. */ /* */ /* Note that the default value of CACHE$GL_PROTOCOL_VER is */ /* zero so that pre-XFC aware versions of the OS 'acquire' */ /* the correct value in their remote CSB's */ /* */ #define CACHE_VERSION$_NOCACHE 0 /* No or unknown locking protocol */ #define CACHE_VERSION$_VCC_V01_00 65536 /* VIOC with no XFC compatibility */ #define CACHE_VERSION$_VCC_V01_01 65537 /* VIOC with XFC compatible protocol */ #define CACHE_VERSION$_XFC_V01_00 131072 /* Fully XFC V1.0 compliant protocol */ #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 /* __VCCDEF_LOADED */