/**/ /***************************************************************************/ /** **/ /** © 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:24:20 by OpenVMS SDL EV3-3 */ /* Source: 12-AUG-2008 08:24:24 $1$DGA7274:[LIB_H.SRC]NPOOL_DATA.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE NPOOL_DATA ***/ #ifndef __NPOOL_DATA_LOADED #define __NPOOL_DATA_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 /*+ */ /* DEFINITION OF SYSTEM PRIMITIVES LOCAL NON-PAGED POOL DATA */ /*- */ #define IOC_C_INVALID_ADDRESS -8388608 /* 4G - 8M */ #define IOC_C_NUMLISTS 160 /* No. of lookaside lists for all system pools */ /* *** See warning above *** */ #define IOC_C_NPAGGRNMSK 63 /* Mask for rounding */ #define IOC_C_NPAGGRNBITS 6 /* Granularity = 2^6 */ #define IOC_C_MAXLISTPKT 10240 /* Max. lookaside list size */ #define IOC_C_PAGGRNMSK 15 /* Mask for rounding */ #define IOC_C_PAGGRNBITS 4 /* Granularity = 2^4 */ #define IOC_C_PAGMAXLISIZ 2560 /* Max. lookaside list size */ #ifdef __cplusplus /* Define structure prototypes */ struct _npool_data; #endif /* #ifdef __cplusplus */ typedef struct _lsthds { unsigned int lsthds$l_filler0; /* Formerly IRPLIST */ unsigned int lsthds$l_varallocbytes; /* How many bytes allocated from variable list */ unsigned int lsthds$l_variablelist_unused; /* Historically important: What EXE$GL_NONPAGED points to */ void *lsthds$ps_variablelist; /* Pointer to next packet on variable list */ unsigned int lsthds$l_variablelist_high; /* For future use if we have 64-bit lists */ unsigned int lsthds$l_expansions; /* How many times this pool has been expanded */ unsigned int lsthds$l_filler2; /* Formerly SRPLIST */ unsigned int *lsthds$ar_listattempts; /* Ptr to array of lookaside list tries */ unsigned int *lsthds$ar_listfails; /* Ptr to array of lookaside list failures */ unsigned int *lsthds$ar_listdeallocs; /* Ptr to array of lookaside list deallocations */ unsigned int lsthds$l_rad; unsigned int lsthds$l_pooltype; struct _npool_data *lsthds$ps_npool_data; /* Pointer to the NPOOL data structure for this pool */ unsigned int lsthds$l_disable_pool_exp_msg; __int64 lsthds$q_listheads [161]; /*The actual lookaside lists. Must be 56 bytes from beginning. */ unsigned __int64 lsthds$q_filler4; /* Don't change offset to LISTCOUNTERS till major VMS version change */ unsigned __int64 lsthds$q_filler5; unsigned __int64 lsthds$q_listcounters [161]; } LSTHDS; #define LSTHDS$K_LENGTH 2648 #define LSTHDS$C_LENGTH 2648 #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __save /* Save current pointer size */ #pragma __required_pointer_size __long /* Pointers are 64-bit */ typedef struct _lsthds * LSTHDS_PQ; /* Long pointer to a LSTHDS structure. */ typedef struct _lsthds ** LSTHDS_PPQ; /* Long pointer to a pointer to a LSTHDS structure. */ #pragma __required_pointer_size __restore /* Return to previous pointer size */ #else typedef unsigned __int64 LSTHDS_PQ; typedef unsigned __int64 LSTHDS_PPQ; #endif /* __INITIAL_POINTER_SIZE */ typedef struct _pool_map { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *pool_map$pq_segment_address; #else unsigned __int64 pool_map$pq_segment_address; #endif unsigned __int64 pool_map$q_segment_length; #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *pool_map$pq_segment_end_address; #else unsigned __int64 pool_map$pq_segment_end_address; #endif unsigned int pool_map$l_rad; int pool_map$l_filler1; } POOL_MAP; #define POOL_MAP$K_LENGTH 32 #define NPOOL$M_NOT_NPP 0x1 #define NPOOL$M_POOL_SEPARATE 0x2 #define NPOOL$M_POOL_WITHIN_NPP 0x4 #define NPOOL$M_MINIMUM_MODE 0x8 #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 _npool_data { #pragma __nomember_alignment unsigned int npool$l_on_rad_dealloc; /* Count deallocs from same RAD as alloc */ unsigned int npool$l_total_dealloc; /* Count total deallocs to get % */ unsigned __int64 npool$q_per_pool_diag; /* Use for diagnostic info */ /* The following are only used in the NPP NPOOL structure for now. */ /* Some other time, we could have one for each pool and sequence tag each entry. */ #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 *npool$ps_ringbuf; /* Pointer to the ring buffer */ void *npool$ps_nextnph; /* Pointer to next element to write to in ring buffer */ unsigned int npool$l_ringbufcnt; /* How many entries in ring buffer? */ char npool_da$$b_fill_0_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif unsigned __int64 npool$q_ringbuflock; /* Lock access to the ringbuffer */ /* The filler forces mostly-read stuff beyond a 128-byte */ /* boundary and hopefully into a different cache block from the frequently-written list heads */ #pragma __nomember_alignment char filler6 [88]; /* After this point, we have read-mostly information. */ #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 _lsthds (*(*npool$ar_lsthds)); /*Pointer to the array of pool list heads */ #else unsigned __int64 npool$ar_lsthds; #endif unsigned int npool$l_max_lsthds; /*Biggest entry in list heads array? */ unsigned int npool$l_gran_mask; /*Granularity of the pool in bytes */ unsigned int npool$l_num_lookaside; /*How many lookaside lists in LSTHDS? */ #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 *npool$ps_variable_list; /* Pointer to the pool's variable list (compatibility) */ struct _pool_map *npool$ps_pool_map; unsigned int npool$l_pool_map_size; /*Number of bytes allcoated for POOL_MAP */ unsigned int npool$l_pool_map_segments; /*Number of segments in POOL_MAP actually used */ __union { __struct { /*This part used for non-paged pool's npool_data */ __union { #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _npool_data *npool$ar_pool_data [2]; #else unsigned __int64 npool$ar_pool_data; #endif /*Dimension should be MMG$K_POOLTYPE_MAXIMUM; */ __struct { /*This are mainly for SDA format. Most uses should index using POOL_TYPE. */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *npool$ar_npp_pool_data; #else unsigned __int64 npool$ar_npp_pool_data; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *npool$ar_bap_pool_data; #else unsigned __int64 npool$ar_bap_pool_data; #endif } npool$r_sda_pool_data; } pool_data_overlay; } non_paged; __struct { /*This part used for new pool types beyond non-paged pool */ __union { unsigned int npool$l_pool_flags; __struct { unsigned npool$v_not_npp : 1; /* Note: If this NPOOL *does* represent non-paged pool, there is an */ /* address here, which will not have bit 0 set. Thus, this flag is */ /* valid in all cases */ unsigned npool$v_pool_separate : 1; unsigned npool$v_pool_within_npp : 1; unsigned npool$v_minimum_mode : 1; unsigned npool$v_fill_1_ : 4; } npool$r_pool_flag_bits; } npool$r_pool_flags_overlay; unsigned int npool$l_filler3; unsigned __int64 npool$q_filler4; } new_pools; } npool_overlay; char npool_da$$b_fill_2_ [4]; } NPOOL_DATA; #if !defined(__VAXC) #define npool$ar_pool_data npool_overlay.non_paged.pool_data_overlay.npool$ar_pool_data #define npool$ar_npp_pool_data npool_overlay.non_paged.pool_data_overlay.npool$r_sda_pool_data.npool$ar_npp_pool_data #define npool$ar_bap_pool_data npool_overlay.non_paged.pool_data_overlay.npool$r_sda_pool_data.npool$ar_bap_pool_data #define npool$l_pool_flags npool_overlay.new_pools.npool$r_pool_flags_overlay.npool$l_pool_flags #define npool$v_not_npp npool_overlay.new_pools.npool$r_pool_flags_overlay.npool$r_pool_flag_bits.npool$v_not_npp #define npool$v_pool_separate npool_overlay.new_pools.npool$r_pool_flags_overlay.npool$r_pool_flag_bits.npool$v_pool_separate #define npool$v_pool_within_npp npool_overlay.new_pools.npool$r_pool_flags_overlay.npool$r_pool_flag_bits.npool$v_pool_within_npp #define npool$v_minimum_mode npool_overlay.new_pools.npool$r_pool_flags_overlay.npool$r_pool_flag_bits.npool$v_minimum_mode #endif /* #if !defined(__VAXC) */ #define NPOOL$K_LENGTH 184 #define NPOOL$C_LENGTH 184 #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 /* __NPOOL_DATA_LOADED */