diff options
author | Dana Robinson <derobins@hdfgroup.org> | 2021-03-25 00:39:37 (GMT) |
---|---|---|
committer | Dana Robinson <derobins@hdfgroup.org> | 2021-03-25 00:39:37 (GMT) |
commit | feb20aac304b39e18c70f88cae2f7cf7d5c82db2 (patch) | |
tree | e15d7e751af4e3c42e77ea955d91db4cf27a71cf /src/H5Fpkg.h | |
parent | bdac2ecdbff2c389a222b3d93ff1eb1d23ec6b23 (diff) | |
download | hdf5-feb20aac304b39e18c70f88cae2f7cf7d5c82db2.zip hdf5-feb20aac304b39e18c70f88cae2f7cf7d5c82db2.tar.gz hdf5-feb20aac304b39e18c70f88cae2f7cf7d5c82db2.tar.bz2 |
Formats the source and updates the gcc warning pragmas
Diffstat (limited to 'src/H5Fpkg.h')
-rw-r--r-- | src/H5Fpkg.h | 658 |
1 files changed, 327 insertions, 331 deletions
diff --git a/src/H5Fpkg.h b/src/H5Fpkg.h index 260a25c..9f9a702 100644 --- a/src/H5Fpkg.h +++ b/src/H5Fpkg.h @@ -30,55 +30,53 @@ #include "H5Fprivate.h" /* Other private headers needed by this file */ -#include "H5private.h" /* Generic Functions */ -#include "H5ACprivate.h" /* Metadata cache */ -#include "H5FDprivate.h" /* VFD -- for VFD SWMR */ -#include "H5Bprivate.h" /* B-trees */ -#include "H5FLprivate.h" /* Free Lists */ -#include "H5FOprivate.h" /* File objects */ -#include "H5FSprivate.h" /* File free space */ -#include "H5Gprivate.h" /* Groups */ -#include "H5Oprivate.h" /* Object header messages */ -#include "H5PBprivate.h" /* Page buffer */ -#include "H5UCprivate.h" /* Reference counted object functions */ - +#include "H5private.h" /* Generic Functions */ +#include "H5ACprivate.h" /* Metadata cache */ +#include "H5FDprivate.h" /* VFD -- for VFD SWMR */ +#include "H5Bprivate.h" /* B-trees */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5FOprivate.h" /* File objects */ +#include "H5FSprivate.h" /* File free space */ +#include "H5Gprivate.h" /* Groups */ +#include "H5Oprivate.h" /* Object header messages */ +#include "H5PBprivate.h" /* Page buffer */ +#include "H5UCprivate.h" /* Reference counted object functions */ /* * Feature: Define this constant on the compiler command-line if you want to * see some debugging messages on the debug stream. */ #ifdef NDEBUG -# undef H5F_DEBUG +#undef H5F_DEBUG #endif /* Superblock status flags */ -#define H5F_SUPER_WRITE_ACCESS 0x01 -#define H5F_SUPER_FILE_OK 0x02 -#define H5F_SUPER_SWMR_WRITE_ACCESS 0x04 -#define H5F_SUPER_ALL_FLAGS (H5F_SUPER_WRITE_ACCESS | H5F_SUPER_FILE_OK | H5F_SUPER_SWMR_WRITE_ACCESS) +#define H5F_SUPER_WRITE_ACCESS 0x01 +#define H5F_SUPER_FILE_OK 0x02 +#define H5F_SUPER_SWMR_WRITE_ACCESS 0x04 +#define H5F_SUPER_ALL_FLAGS (H5F_SUPER_WRITE_ACCESS | H5F_SUPER_FILE_OK | H5F_SUPER_SWMR_WRITE_ACCESS) /* Mask for removing private file access flags */ -#define H5F_ACC_PUBLIC_FLAGS 0x007fu +#define H5F_ACC_PUBLIC_FLAGS 0x007fu /* Free space section+aggregator merge flags */ -#define H5F_FS_MERGE_METADATA 0x01 /* Section can merge with metadata aggregator */ -#define H5F_FS_MERGE_RAWDATA 0x02 /* Section can merge with small 'raw' data aggregator */ +#define H5F_FS_MERGE_METADATA 0x01 /* Section can merge with metadata aggregator */ +#define H5F_FS_MERGE_RAWDATA 0x02 /* Section can merge with small 'raw' data aggregator */ /* Macro to abstract checking whether file is using a free space manager */ -#define H5F_HAVE_FREE_SPACE_MANAGER(F) \ - ((F)->shared->fs_strategy == H5F_FSPACE_STRATEGY_FSM_AGGR || \ +#define H5F_HAVE_FREE_SPACE_MANAGER(F) \ + ((F)->shared->fs_strategy == H5F_FSPACE_STRATEGY_FSM_AGGR || \ (F)->shared->fs_strategy == H5F_FSPACE_STRATEGY_PAGE) /* Macros for encoding/decoding superblock */ -#define H5F_MAX_DRVINFOBLOCK_SIZE 1024 /* Maximum size of superblock driver info buffer */ -#define H5F_DRVINFOBLOCK_HDR_SIZE 16 /* Size of superblock driver info header */ +#define H5F_MAX_DRVINFOBLOCK_SIZE 1024 /* Maximum size of superblock driver info buffer */ +#define H5F_DRVINFOBLOCK_HDR_SIZE 16 /* Size of superblock driver info header */ /* Superblock sizes for various versions */ -#define H5F_SIZEOF_CHKSUM 4 /* Checksum size in the file */ +#define H5F_SIZEOF_CHKSUM 4 /* Checksum size in the file */ /* Fixed-size portion at the beginning of all superblocks */ -#define H5F_SUPERBLOCK_FIXED_SIZE ( H5F_SIGNATURE_LEN \ - + 1) /* superblock version */ +#define H5F_SUPERBLOCK_FIXED_SIZE (H5F_SIGNATURE_LEN + 1) /* superblock version */ /* The H5F_SUPERBLOCK_MINIMAL_VARLEN_SIZE is the minimal amount of super block * variable length data guarnateed to load the sizeof offsets and the sizeof @@ -93,65 +91,67 @@ * of the super block. Note that the current value is one byte larger * than it needs to be. */ -#define H5F_SUPERBLOCK_MINIMAL_VARLEN_SIZE 7 +#define H5F_SUPERBLOCK_MINIMAL_VARLEN_SIZE 7 /* Macros for computing variable-size superblock size */ -#define H5F_SUPERBLOCK_VARLEN_SIZE_COMMON \ - (2 /* freespace, and root group versions */ \ - + 1 /* reserved */ \ - + 3 /* shared header vers, size of address, size of lengths */ \ - + 1 /* reserved */ \ - + 4 /* group leaf k, group internal k */ \ - + 4) /* consistency flags */ -#define H5F_SUPERBLOCK_VARLEN_SIZE_V0(sizeof_addr, sizeof_size) \ - ( H5F_SUPERBLOCK_VARLEN_SIZE_COMMON /* Common variable-length info */ \ - + (sizeof_addr) /* base address */ \ - + (sizeof_addr) /* <unused> */ \ - + (sizeof_addr) /* EOF address */ \ - + (sizeof_addr) /* driver block address */ \ - + H5G_SIZEOF_ENTRY(sizeof_addr, sizeof_size)) /* root group ptr */ -#define H5F_SUPERBLOCK_VARLEN_SIZE_V1(sizeof_addr, sizeof_size) \ - ( H5F_SUPERBLOCK_VARLEN_SIZE_COMMON /* Common variable-length info */ \ - + 2 /* indexed B-tree internal k */ \ - + 2 /* reserved */ \ - + (sizeof_addr) /* base address */ \ - + (sizeof_addr) /* <unused> */ \ - + (sizeof_addr) /* EOF address */ \ - + (sizeof_addr) /* driver block address */ \ - + H5G_SIZEOF_ENTRY(sizeof_addr, sizeof_size)) /* root group ptr */ -#define H5F_SUPERBLOCK_VARLEN_SIZE_V2(sizeof_addr) \ - ( 2 /* size of address, size of lengths */ \ - + 1 /* consistency flags */ \ - + (sizeof_addr) /* base address */ \ - + (sizeof_addr) /* superblock extension address */ \ - + (sizeof_addr) /* EOF address */ \ - + (sizeof_addr) /* root group object header address */ \ - + H5F_SIZEOF_CHKSUM) /* superblock checksum (keep this last) */ -#define H5F_SUPERBLOCK_VARLEN_SIZE(v, sizeof_addr, sizeof_size) ( \ - (v == 0 ? H5F_SUPERBLOCK_VARLEN_SIZE_V0(sizeof_addr, sizeof_size) : 0) \ - + (v == 1 ? H5F_SUPERBLOCK_VARLEN_SIZE_V1(sizeof_addr, sizeof_size) : 0) \ - + (v >= 2 ? H5F_SUPERBLOCK_VARLEN_SIZE_V2(sizeof_addr) : 0)) +#define H5F_SUPERBLOCK_VARLEN_SIZE_COMMON \ + (2 /* freespace, and root group versions */ \ + + 1 /* reserved */ \ + + 3 /* shared header vers, size of address, size of lengths */ \ + + 1 /* reserved */ \ + + 4 /* group leaf k, group internal k */ \ + + 4) /* consistency flags */ +#define H5F_SUPERBLOCK_VARLEN_SIZE_V0(sizeof_addr, sizeof_size) \ + (H5F_SUPERBLOCK_VARLEN_SIZE_COMMON /* Common variable-length info */ \ + + (sizeof_addr) /* base address */ \ + + (sizeof_addr) /* <unused> */ \ + + (sizeof_addr) /* EOF address */ \ + + (sizeof_addr) /* driver block address */ \ + + H5G_SIZEOF_ENTRY(sizeof_addr, sizeof_size)) /* root group ptr */ +#define H5F_SUPERBLOCK_VARLEN_SIZE_V1(sizeof_addr, sizeof_size) \ + (H5F_SUPERBLOCK_VARLEN_SIZE_COMMON /* Common variable-length info */ \ + + 2 /* indexed B-tree internal k */ \ + + 2 /* reserved */ \ + + (sizeof_addr) /* base address */ \ + + (sizeof_addr) /* <unused> */ \ + + (sizeof_addr) /* EOF address */ \ + + (sizeof_addr) /* driver block address */ \ + + H5G_SIZEOF_ENTRY(sizeof_addr, sizeof_size)) /* root group ptr */ +#define H5F_SUPERBLOCK_VARLEN_SIZE_V2(sizeof_addr) \ + (2 /* size of address, size of lengths */ \ + + 1 /* consistency flags */ \ + + (sizeof_addr) /* base address */ \ + + (sizeof_addr) /* superblock extension address */ \ + + (sizeof_addr) /* EOF address */ \ + + (sizeof_addr) /* root group object header address */ \ + + H5F_SIZEOF_CHKSUM) /* superblock checksum (keep this last) */ +#define H5F_SUPERBLOCK_VARLEN_SIZE(v, sizeof_addr, sizeof_size) \ + ((v == 0 ? H5F_SUPERBLOCK_VARLEN_SIZE_V0(sizeof_addr, sizeof_size) : 0) + \ + (v == 1 ? H5F_SUPERBLOCK_VARLEN_SIZE_V1(sizeof_addr, sizeof_size) : 0) + \ + (v >= 2 ? H5F_SUPERBLOCK_VARLEN_SIZE_V2(sizeof_addr) : 0)) /* Total size of superblock, depends on superblock version */ -#define H5F_SUPERBLOCK_SIZE(s) ( H5F_SUPERBLOCK_FIXED_SIZE \ - + H5F_SUPERBLOCK_VARLEN_SIZE((s)->super_vers, (s)->sizeof_addr, (s)->sizeof_size)) +#define H5F_SUPERBLOCK_SIZE(s) \ + (H5F_SUPERBLOCK_FIXED_SIZE + \ + H5F_SUPERBLOCK_VARLEN_SIZE((s)->super_vers, (s)->sizeof_addr, (s)->sizeof_size)) /* For superblock version 0 & 1: - Offset to the file consistency flags (status_flags) in the superblock (excluding H5F_SUPERBLOCK_FIXED_SIZE) */ -#define H5F_SUPER_STATUS_OFF_V01 \ - (unsigned)(2 /* freespace, and root group versions */ \ - + 1 /* reserved */ \ - + 3 /* shared header vers, size of address, size of lengths */ \ - + 1 /* reserved */ \ - + 4) /* group leaf k, group internal k */ + Offset to the file consistency flags (status_flags) in the superblock (excluding H5F_SUPERBLOCK_FIXED_SIZE) + */ +#define H5F_SUPER_STATUS_OFF_V01 \ + (unsigned)(2 /* freespace, and root group versions */ \ + + 1 /* reserved */ \ + + 3 /* shared header vers, size of address, size of lengths */ \ + + 1 /* reserved */ \ + + 4) /* group leaf k, group internal k */ -#define H5F_SUPER_STATUS_OFF(v) (v >= 2 ? (unsigned)2 : H5F_SUPER_STATUS_OFF_V01) +#define H5F_SUPER_STATUS_OFF(v) (v >= 2 ? (unsigned)2 : H5F_SUPER_STATUS_OFF_V01) /* Offset to the file consistency flags (status_flags) in the superblock */ #define H5F_SUPER_STATUS_FLAGS_OFF(v) (H5F_SUPERBLOCK_FIXED_SIZE + H5F_SUPER_STATUS_OFF(v)) /* Size of file consistency flags (status_flags) in the superblock */ -#define H5F_SUPER_STATUS_FLAGS_SIZE(v) (v >= 2 ? 1 : 4) +#define H5F_SUPER_STATUS_FLAGS_SIZE(v) (v >= 2 ? 1 : 4) /* Forward declaration external file cache struct used below (defined in * H5Fefc.c) */ @@ -159,49 +159,49 @@ typedef struct H5F_efc_t H5F_efc_t; /* Structure for passing 'user data' to superblock cache callbacks */ typedef struct H5F_superblock_cache_ud_t { -/* IN: */ - H5F_t *f; /* Pointer to file */ - hbool_t ignore_drvrinfo; /* Indicate if the driver info should be ignored */ -/* OUT: */ - unsigned sym_leaf_k; /* Symbol table leaf node's 'K' value */ + /* IN: */ + H5F_t * f; /* Pointer to file */ + hbool_t ignore_drvrinfo; /* Indicate if the driver info should be ignored */ + /* OUT: */ + unsigned sym_leaf_k; /* Symbol table leaf node's 'K' value */ unsigned btree_k[H5B_NUM_BTREE_ID]; /* B-tree key values for each type */ - haddr_t stored_eof; /* End-of-file in file */ - hbool_t drvrinfo_removed; /* Indicate if the driver info was removed */ - unsigned super_vers; /* Superblock version obtained in get_load_size callback. - * It will be used later in verify_chksum callback - */ + haddr_t stored_eof; /* End-of-file in file */ + hbool_t drvrinfo_removed; /* Indicate if the driver info was removed */ + unsigned super_vers; /* Superblock version obtained in get_load_size callback. + * It will be used later in verify_chksum callback + */ } H5F_superblock_cache_ud_t; /* Structure for passing 'user data' to driver info block cache callbacks */ typedef struct H5F_drvrinfo_cache_ud_t { - H5F_t *f; /* Pointer to file */ - haddr_t driver_addr; /* address of driver info block */ + H5F_t * f; /* Pointer to file */ + haddr_t driver_addr; /* address of driver info block */ } H5F_drvrinfo_cache_ud_t; /* Structure for metadata & "small [raw] data" block aggregation fields */ struct H5F_blk_aggr_t { - unsigned long feature_flag; /* Feature flag type */ - hsize_t alloc_size; /* Size for allocating new blocks */ - hsize_t tot_size; /* Total amount of bytes aggregated into block */ - hsize_t size; /* Current size of block left */ - haddr_t addr; /* Location of block left */ + unsigned long feature_flag; /* Feature flag type */ + hsize_t alloc_size; /* Size for allocating new blocks */ + hsize_t tot_size; /* Total amount of bytes aggregated into block */ + hsize_t size; /* Current size of block left */ + haddr_t addr; /* Location of block left */ }; /* Structure for metadata accumulator fields */ typedef struct H5F_meta_accum_t { - unsigned char *buf; /* Buffer to hold the accumulated metadata */ - haddr_t loc; /* File location (offset) of the accumulated metadata */ - size_t size; /* Size of the accumulated metadata buffer used (in bytes) */ - size_t alloc_size; /* Size of the accumulated metadata buffer allocated (in bytes) */ - size_t dirty_off; /* Offset of the dirty region in the accumulator buffer */ - size_t dirty_len; /* Length of the dirty region in the accumulator buffer */ - hbool_t dirty; /* Flag to indicate that the accumulated metadata is dirty */ + unsigned char *buf; /* Buffer to hold the accumulated metadata */ + haddr_t loc; /* File location (offset) of the accumulated metadata */ + size_t size; /* Size of the accumulated metadata buffer used (in bytes) */ + size_t alloc_size; /* Size of the accumulated metadata buffer allocated (in bytes) */ + size_t dirty_off; /* Offset of the dirty region in the accumulator buffer */ + size_t dirty_len; /* Length of the dirty region in the accumulator buffer */ + hbool_t dirty; /* Flag to indicate that the accumulated metadata is dirty */ } H5F_meta_accum_t; /* A record of the mount table */ typedef struct H5F_mount_t { - struct H5G_t *group; /* Mount point group held open */ - struct H5F_t *file; /* File mounted at that point */ + struct H5G_t *group; /* Mount point group held open */ + struct H5F_t *file; /* File mounted at that point */ } H5F_mount_t; /* @@ -209,51 +209,51 @@ typedef struct H5F_mount_t { * to which this table belongs. */ typedef struct H5F_mtab_t { - unsigned nmounts;/* Number of children which are mounted */ - unsigned nalloc; /* Number of mount slots allocated */ - H5F_mount_t *child; /* An array of mount records */ + unsigned nmounts; /* Number of children which are mounted */ + unsigned nalloc; /* Number of mount slots allocated */ + H5F_mount_t *child; /* An array of mount records */ } H5F_mtab_t; /* Deferred-free record for the shadow file: records a region of bytes in * the shadow file to release after max_lag ticks. */ typedef struct shadow_defree { - uint64_t offset; // offset of the region in *bytes* - uint32_t length; // length of the region in *bytes* - uint64_t tick_num; // tick number when the free was deferred - TAILQ_ENTRY(shadow_defree) link; // deferred-free queue linkage + uint64_t offset; // offset of the region in *bytes* + uint32_t length; // length of the region in *bytes* + uint64_t tick_num; // tick number when the free was deferred + TAILQ_ENTRY(shadow_defree) link; // deferred-free queue linkage } shadow_defree_t; /* Structure specifically to store superblock. This was originally * maintained entirely within H5F_shared_t, but is now extracted * here because the superblock is now handled by the cache */ typedef struct H5F_super_t { - H5AC_info_t cache_info; /* Cache entry information structure */ - unsigned super_vers; /* Superblock version */ - uint8_t sizeof_addr; /* Size of addresses in file */ - uint8_t sizeof_size; /* Size of offsets in file */ - uint8_t status_flags; /* File status flags */ - unsigned sym_leaf_k; /* Size of leaves in symbol tables */ + H5AC_info_t cache_info; /* Cache entry information structure */ + unsigned super_vers; /* Superblock version */ + uint8_t sizeof_addr; /* Size of addresses in file */ + uint8_t sizeof_size; /* Size of offsets in file */ + uint8_t status_flags; /* File status flags */ + unsigned sym_leaf_k; /* Size of leaves in symbol tables */ unsigned btree_k[H5B_NUM_BTREE_ID]; /* B-tree key values for each type */ - haddr_t base_addr; /* Absolute base address for rel.addrs. */ - /* (superblock for file is at this offset) */ - haddr_t ext_addr; /* Relative address of superblock extension */ - haddr_t driver_addr; /* File driver information block address */ - haddr_t root_addr; /* Root group address */ - H5G_entry_t *root_ent; /* Root group symbol table entry */ + haddr_t base_addr; /* Absolute base address for rel.addrs. */ + /* (superblock for file is at this offset) */ + haddr_t ext_addr; /* Relative address of superblock extension */ + haddr_t driver_addr; /* File driver information block address */ + haddr_t root_addr; /* Root group address */ + H5G_entry_t *root_ent; /* Root group symbol table entry */ } H5F_super_t; /* Deferred-free record for the lower file: records a region of bytes in * the file below the SWMR VFD to release after a delay. */ typedef struct lower_defree { - SIMPLEQ_ENTRY(lower_defree) link; // deferred-free queue linkage - H5FD_mem_t alloc_type; // type with which the region was allocated - haddr_t addr; // start of the region *in bytes* - hsize_t size; // length of the region *in bytes* - uint64_t free_after_tick; /* the region may be reused on tick - * free_after_tick + 1 at the earliest - */ + SIMPLEQ_ENTRY(lower_defree) link; // deferred-free queue linkage + H5FD_mem_t alloc_type; // type with which the region was allocated + haddr_t addr; // start of the region *in bytes* + hsize_t size; // length of the region *in bytes* + uint64_t free_after_tick; /* the region may be reused on tick + * free_after_tick + 1 at the earliest + */ } lower_defree_t; /* Queue of deferred-free records (lower_defree_t) for the lower file, sorted @@ -274,230 +274,227 @@ typedef TAILQ_HEAD(shadow_defree_queue, shadow_defree) shadow_defree_queue_t; * pointing to this struct. */ struct H5F_shared_t { - H5FD_t *lf; /* Lower level file handle for I/O */ - H5F_super_t *sblock; /* Pointer to (pinned) superblock for file */ - H5O_drvinfo_t *drvinfo; /* Pointer to the (pinned) driver info - * cache entry. This field is only defined - * for older versions of the super block, - * and then only when a driver information - * block is present. At all other times - * it should be NULL. - */ - hbool_t drvinfo_sb_msg_exists; /* Convenience field used to track - * whether the driver info superblock - * extension message has been created - * yet. This field should be TRUE iff the - * superblock extension exists and contains - * a driver info message. Under all other - * circumstances, it must be set to FALSE. - */ - unsigned nrefs; /* Ref count for times file is opened */ - unsigned flags; /* Access Permissions for file */ - H5F_mtab_t mtab; /* File mount table */ - H5F_efc_t *efc; /* External file cache */ + H5FD_t * lf; /* Lower level file handle for I/O */ + H5F_super_t * sblock; /* Pointer to (pinned) superblock for file */ + H5O_drvinfo_t *drvinfo; /* Pointer to the (pinned) driver info + * cache entry. This field is only defined + * for older versions of the super block, + * and then only when a driver information + * block is present. At all other times + * it should be NULL. + */ + hbool_t drvinfo_sb_msg_exists; /* Convenience field used to track + * whether the driver info superblock + * extension message has been created + * yet. This field should be TRUE iff the + * superblock extension exists and contains + * a driver info message. Under all other + * circumstances, it must be set to FALSE. + */ + unsigned nrefs; /* Ref count for times file is opened */ + unsigned flags; /* Access Permissions for file */ + H5F_mtab_t mtab; /* File mount table */ + H5F_efc_t *efc; /* External file cache */ /* Cached values from FCPL/superblock */ - uint8_t sizeof_addr; /* Size of addresses in file */ - uint8_t sizeof_size; /* Size of offsets in file */ - haddr_t sohm_addr; /* Relative address of shared object header message table */ - unsigned sohm_vers; /* Version of shared message table on disk */ - unsigned sohm_nindexes; /* Number of shared messages indexes in the table */ + uint8_t sizeof_addr; /* Size of addresses in file */ + uint8_t sizeof_size; /* Size of offsets in file */ + haddr_t sohm_addr; /* Relative address of shared object header message table */ + unsigned sohm_vers; /* Version of shared message table on disk */ + unsigned sohm_nindexes; /* Number of shared messages indexes in the table */ unsigned long feature_flags; /* VFL Driver feature Flags */ - haddr_t maxaddr; /* Maximum address for file */ - - H5PB_t *pb_ptr; /* pointer to the page buffer, or NULL */ - /* if the page buffer is disabled. */ - - H5AC_t *cache; /* The object cache */ - H5AC_cache_config_t - mdc_initCacheCfg; /* initial configuration for the */ - /* metadata cache. This structure is */ - /* fixed at creation time and should */ - /* not change thereafter. */ - H5AC_cache_image_config_t - mdc_initCacheImageCfg; /* initial configuration for the */ - /* generate metadata cache image on */ - /* close option. This structure is */ - /* fixed at creation time and should */ - /* not change thereafter. */ - hbool_t use_mdc_logging; /* Set when metadata logging is desired */ - hbool_t start_mdc_log_on_access; /* set when mdc logging should */ - /* begin on file access/create */ - char *mdc_log_location; /* location of mdc log */ - hid_t fcpl_id; /* File creation property list ID */ - H5F_close_degree_t fc_degree; /* File close behavior degree */ - hbool_t evict_on_close; /* If the file's objects should be evicted from the metadata cache on close */ - size_t rdcc_nslots; /* Size of raw data chunk cache (slots) */ - size_t rdcc_nbytes; /* Size of raw data chunk cache (bytes) */ - double rdcc_w0; /* Preempt read chunks first? [0.0..1.0]*/ - size_t sieve_buf_size; /* Size of the data sieve buffer allocated (in bytes) */ - hsize_t threshold; /* Threshold for alignment */ - hsize_t alignment; /* Alignment */ - unsigned gc_ref; /* Garbage-collect references? */ - H5F_libver_t low_bound; /* The 'low' bound of library format versions */ - H5F_libver_t high_bound; /* The 'high' bound of library format versions */ - hbool_t store_msg_crt_idx; /* Store creation index for object header messages? */ - unsigned ncwfs; /* Num entries on cwfs list */ - struct H5HG_heap_t **cwfs; /* Global heap cache */ - struct H5G_t *root_grp; /* Open root group */ - H5FO_t *open_objs; /* Open objects in file */ - H5UC_t *grp_btree_shared; /* Ref-counted group B-tree node info */ - hbool_t closing; /* File is in the process of being closed */ + haddr_t maxaddr; /* Maximum address for file */ + + H5PB_t *pb_ptr; /* pointer to the page buffer, or NULL */ + /* if the page buffer is disabled. */ + + H5AC_t * cache; /* The object cache */ + H5AC_cache_config_t mdc_initCacheCfg; /* initial configuration for the */ + /* metadata cache. This structure is */ + /* fixed at creation time and should */ + /* not change thereafter. */ + H5AC_cache_image_config_t mdc_initCacheImageCfg; /* initial configuration for the */ + /* generate metadata cache image on */ + /* close option. This structure is */ + /* fixed at creation time and should */ + /* not change thereafter. */ + hbool_t use_mdc_logging; /* Set when metadata logging is desired */ + hbool_t start_mdc_log_on_access; /* set when mdc logging should */ + /* begin on file access/create */ + char * mdc_log_location; /* location of mdc log */ + hid_t fcpl_id; /* File creation property list ID */ + H5F_close_degree_t fc_degree; /* File close behavior degree */ + hbool_t evict_on_close; /* If the file's objects should be evicted from the metadata cache on close */ + size_t rdcc_nslots; /* Size of raw data chunk cache (slots) */ + size_t rdcc_nbytes; /* Size of raw data chunk cache (bytes) */ + double rdcc_w0; /* Preempt read chunks first? [0.0..1.0]*/ + size_t sieve_buf_size; /* Size of the data sieve buffer allocated (in bytes) */ + hsize_t threshold; /* Threshold for alignment */ + hsize_t alignment; /* Alignment */ + unsigned gc_ref; /* Garbage-collect references? */ + H5F_libver_t low_bound; /* The 'low' bound of library format versions */ + H5F_libver_t high_bound; /* The 'high' bound of library format versions */ + hbool_t store_msg_crt_idx; /* Store creation index for object header messages? */ + unsigned ncwfs; /* Num entries on cwfs list */ + struct H5HG_heap_t **cwfs; /* Global heap cache */ + struct H5G_t * root_grp; /* Open root group */ + H5FO_t * open_objs; /* Open objects in file */ + H5UC_t * grp_btree_shared; /* Ref-counted group B-tree node info */ + hbool_t closing; /* File is in the process of being closed */ /* Cached VOL connector ID & info */ - hid_t vol_id; /* ID of VOL connector for the container */ - const H5VL_class_t *vol_cls; /* Pointer to VOL connector class for the container */ - void *vol_info; /* Copy of VOL connector info for container */ + hid_t vol_id; /* ID of VOL connector for the container */ + const H5VL_class_t *vol_cls; /* Pointer to VOL connector class for the container */ + void * vol_info; /* Copy of VOL connector info for container */ /* File space allocation information */ - H5F_fspace_strategy_t fs_strategy; /* File space handling strategy */ - hsize_t fs_threshold; /* Free space section threshold */ - hbool_t fs_persist; /* Free-space persist or not */ - unsigned fs_version; /* Free-space version: */ - /* It is used to update fsinfo message in the superblock - extension when closing down the free-space managers */ - hbool_t use_tmp_space; /* Whether temp. file space allocation is allowed */ - haddr_t tmp_addr; /* Next address to use for temp. space in the file */ - hbool_t point_of_no_return; /* Flag to indicate that we can't go back and delete a freespace header when it's used up */ - - H5F_fs_state_t fs_state[H5F_MEM_PAGE_NTYPES]; /* State of free space manager for each type */ - haddr_t fs_addr[H5F_MEM_PAGE_NTYPES]; /* Address of free space manager info for each type */ - H5FS_t *fs_man[H5F_MEM_PAGE_NTYPES]; /* Free space manager for each file space type */ - hbool_t null_fsm_addr; /* Used by h5clear tool to tell the library */ - /* to drop free-space to the floor */ - haddr_t eoa_fsm_fsalloc; /* eoa after file space allocation */ - /* for self referential FSMs */ - haddr_t eoa_post_mdci_fsalloc; /* eoa past file space allocation */ - /* for metadata cache image, or */ - /* HADDR_UNDEF if no cache image. */ + H5F_fspace_strategy_t fs_strategy; /* File space handling strategy */ + hsize_t fs_threshold; /* Free space section threshold */ + hbool_t fs_persist; /* Free-space persist or not */ + unsigned fs_version; /* Free-space version: */ + /* It is used to update fsinfo message in the superblock + extension when closing down the free-space managers */ + hbool_t use_tmp_space; /* Whether temp. file space allocation is allowed */ + haddr_t tmp_addr; /* Next address to use for temp. space in the file */ + hbool_t point_of_no_return; /* Flag to indicate that we can't go back and delete a freespace header when + it's used up */ + + H5F_fs_state_t fs_state[H5F_MEM_PAGE_NTYPES]; /* State of free space manager for each type */ + haddr_t fs_addr[H5F_MEM_PAGE_NTYPES]; /* Address of free space manager info for each type */ + H5FS_t * fs_man[H5F_MEM_PAGE_NTYPES]; /* Free space manager for each file space type */ + hbool_t null_fsm_addr; /* Used by h5clear tool to tell the library */ + /* to drop free-space to the floor */ + haddr_t eoa_fsm_fsalloc; /* eoa after file space allocation */ + /* for self referential FSMs */ + haddr_t eoa_post_mdci_fsalloc; /* eoa past file space allocation */ + /* for metadata cache image, or */ + /* HADDR_UNDEF if no cache image. */ /* Free-space aggregation info */ - unsigned fs_aggr_merge[H5FD_MEM_NTYPES]; /* Flags for whether free space can merge with aggregator(s) */ - H5FD_mem_t fs_type_map[H5FD_MEM_NTYPES]; /* Mapping of "real" file space type into tracked type */ - H5F_blk_aggr_t meta_aggr; /* Metadata aggregation info (if aggregating metadata allocations) */ - H5F_blk_aggr_t sdata_aggr; /* "Small data" aggregation info (if aggregating "small data" allocations) */ + unsigned fs_aggr_merge[H5FD_MEM_NTYPES]; /* Flags for whether free space can merge with aggregator(s) */ + H5FD_mem_t fs_type_map[H5FD_MEM_NTYPES]; /* Mapping of "real" file space type into tracked type */ + H5F_blk_aggr_t meta_aggr; /* Metadata aggregation info (if aggregating metadata allocations) */ + H5F_blk_aggr_t sdata_aggr; /* "Small data" aggregation info (if aggregating "small data" allocations) */ /* Paged aggregation info */ - hsize_t fs_page_size; /* File space page size */ - size_t pgend_meta_thres; /* Do not track page end meta section <= this threshold */ + hsize_t fs_page_size; /* File space page size */ + size_t pgend_meta_thres; /* Do not track page end meta section <= this threshold */ /* Metadata accumulator information */ - H5F_meta_accum_t accum; /* Metadata accumulator info */ + H5F_meta_accum_t accum; /* Metadata accumulator info */ /* Metadata retry info */ - unsigned read_attempts; /* The # of reads to try when reading metadata with checksum */ - unsigned retries_nbins; /* # of bins for each retries[] */ - uint32_t *retries[H5AC_NTYPES]; /* Track # of read retries for metdata items with checksum */ + unsigned read_attempts; /* The # of reads to try when reading metadata with checksum */ + unsigned retries_nbins; /* # of bins for each retries[] */ + uint32_t *retries[H5AC_NTYPES]; /* Track # of read retries for metdata items with checksum */ /* Object flush info */ - H5F_object_flush_t object_flush; /* Information for object flush callback */ - hbool_t crt_dset_min_ohdr_flag; /* flag to minimize created dataset object header */ + H5F_object_flush_t object_flush; /* Information for object flush callback */ + hbool_t crt_dset_min_ohdr_flag; /* flag to minimize created dataset object header */ /* VFD SWMR */ /* Configuration info */ - H5F_vfd_swmr_config_t vfd_swmr_config; /* Copy of the VFD SWMR - * configuration from the - * FAPL used to open the file - */ - haddr_t writer_index_offset; /* Current byte offset of the - * shadow index in the shadow file. - */ - hbool_t vfd_swmr; /* The file is opened with VFD - * SWMR configured or not - */ - hbool_t vfd_swmr_writer; /* This is the VFD SWMR writer or - * not - */ - uint64_t tick_num; /* Number of the current tick */ - struct timespec end_of_tick; /* End time of the current tick */ - - lower_defree_queue_t lower_defrees; /* Records of lower-file space - * awaiting reclamation. + H5F_vfd_swmr_config_t vfd_swmr_config; /* Copy of the VFD SWMR + * configuration from the + * FAPL used to open the file + */ + haddr_t writer_index_offset; /* Current byte offset of the + * shadow index in the shadow file. + */ + hbool_t vfd_swmr; /* The file is opened with VFD + * SWMR configured or not + */ + hbool_t vfd_swmr_writer; /* This is the VFD SWMR writer or + * not */ + uint64_t tick_num; /* Number of the current tick */ + struct timespec end_of_tick; /* End time of the current tick */ + + lower_defree_queue_t lower_defrees; /* Records of lower-file space + * awaiting reclamation. + */ /* VFD SWMR metadata file index */ - H5FD_vfd_swmr_idx_entry_t * mdf_idx; /* pointer to an array of instance - * of H5FD_vfd_swmr_idx_entry_t of - * length mdf_idx_len. This array - * is used by the vfd swmr writer - * to assemble the metadata file - * index at the end of each tick, - * and by the vfd swmr readers to - * track changes in the index. - * With one brief exception during - * writer end of tick processing, - * this index will always be sorted - * in increasing HDF5 file page - * offset order. - * - * This field should be NULL unless - * the index is defined. - */ - uint32_t mdf_idx_len; /* number of entries in the array - * of instances of - * H5FD_vfd_swmr_idx_entry_t pointed - * to by mdf_idx above. Note that - * not all entries in the index - * need be used. - */ - uint32_t mdf_idx_entries_used; /* Number of entries in *mdf_idx - * that are in use -- these will - * be contiguous at indicies 0 - * through mdf_idx_entries_used - 1. - */ + H5FD_vfd_swmr_idx_entry_t *mdf_idx; /* pointer to an array of instance + * of H5FD_vfd_swmr_idx_entry_t of + * length mdf_idx_len. This array + * is used by the vfd swmr writer + * to assemble the metadata file + * index at the end of each tick, + * and by the vfd swmr readers to + * track changes in the index. + * With one brief exception during + * writer end of tick processing, + * this index will always be sorted + * in increasing HDF5 file page + * offset order. + * + * This field should be NULL unless + * the index is defined. + */ + uint32_t mdf_idx_len; /* number of entries in the array + * of instances of + * H5FD_vfd_swmr_idx_entry_t pointed + * to by mdf_idx above. Note that + * not all entries in the index + * need be used. + */ + uint32_t mdf_idx_entries_used; /* Number of entries in *mdf_idx + * that are in use -- these will + * be contiguous at indicies 0 + * through mdf_idx_entries_used - 1. + */ /* Old VFD SWMMR metadata file index. These fields are used only - * by the VFD SWMR reader to store the previous version of the - * metadata file index so that it can be compared with the current - * version to identify page buffer and metadata cache entries that + * by the VFD SWMR reader to store the previous version of the + * metadata file index so that it can be compared with the current + * version to identify page buffer and metadata cache entries that * must be evicted or refreshed to avoid message from the past bugs. */ - H5FD_vfd_swmr_idx_entry_t * old_mdf_idx; - uint32_t old_mdf_idx_len; - uint32_t old_mdf_idx_entries_used; + H5FD_vfd_swmr_idx_entry_t *old_mdf_idx; + uint32_t old_mdf_idx_len; + uint32_t old_mdf_idx_entries_used; /* Metadata file for VFD SWMR writer */ - int vfd_swmr_md_fd; /* POSIX: file descriptor for the - * metadata file - */ - haddr_t vfd_swmr_md_eoa; /* POSIX: eoa for the metadata - * file - */ + int vfd_swmr_md_fd; /* POSIX: file descriptor for the + * metadata file + */ + haddr_t vfd_swmr_md_eoa; /* POSIX: eoa for the metadata + * file + */ /* Free space manager for the metadata file */ - H5FS_t *fs_man_md; /* Free-space manager */ - H5F_fs_state_t fs_state_md; /* State of the free space - * manager - */ + H5FS_t * fs_man_md; /* Free-space manager */ + H5F_fs_state_t fs_state_md; /* State of the free space + * manager + */ /* Delayed free space release doubly linked list */ shadow_defree_queue_t shadow_defrees; - char *extpath; /* Path for searching target external link file */ + char * extpath; /* Path for searching target external link file */ #ifdef H5_HAVE_PARALLEL H5P_coll_md_read_flag_t coll_md_read; /* Do all metadata reads collectively */ - hbool_t coll_md_write; /* Do all metadata writes collectively */ -#endif /* H5_HAVE_PARALLEL */ - + hbool_t coll_md_write; /* Do all metadata writes collectively */ +#endif /* H5_HAVE_PARALLEL */ }; - /* * This is the top-level file descriptor. One of these structures is * allocated every time H5Fopen() is called although they may contain pointers * to shared H5F_shared_t structs. */ struct H5F_t { - char *open_name; /* Name used to open file */ - char *actual_name; /* Actual name of the file, after resolving symlinks, etc. */ - H5F_shared_t *shared; /* The shared file info */ - H5VL_object_t *vol_obj; /* VOL object */ - unsigned nopen_objs; /* Number of open object headers */ - H5FO_t *obj_count; /* # of time each object is opened through top file structure */ - hbool_t id_exists; /* Whether an ID for this struct exists */ - hbool_t closing; /* File is in the process of being closed */ - struct H5F_t *parent; /* Parent file that this file is mounted to */ - unsigned nmounts; /* Number of children mounted to this file */ + char * open_name; /* Name used to open file */ + char * actual_name; /* Actual name of the file, after resolving symlinks, etc. */ + H5F_shared_t * shared; /* The shared file info */ + H5VL_object_t *vol_obj; /* VOL object */ + unsigned nopen_objs; /* Number of open object headers */ + H5FO_t * obj_count; /* # of time each object is opened through top file structure */ + hbool_t id_exists; /* Whether an ID for this struct exists */ + hbool_t closing; /* File is in the process of being closed */ + struct H5F_t * parent; /* Parent file that this file is mounted to */ + unsigned nmounts; /* Number of children mounted to this file */ }; /*****************************/ @@ -510,27 +507,26 @@ H5FL_EXTERN(H5F_t); /* Declare a free list to manage the H5F_shared_t struct */ H5FL_EXTERN(H5F_shared_t); - /******************************/ /* Package Private Prototypes */ /******************************/ /* General routines */ H5_DLL herr_t H5F__post_open(H5F_t *f); -H5_DLL H5F_t *H5F__reopen(H5F_t *f); -H5_DLL herr_t H5F__dest(H5F_t *f, hbool_t flush); -H5_DLL herr_t H5F__flush(H5F_t *f); -H5_DLL htri_t H5F__is_hdf5(const char *name, hid_t fapl_id); +H5_DLL H5F_t * H5F__reopen(H5F_t *f); +H5_DLL herr_t H5F__dest(H5F_t *f, hbool_t flush); +H5_DLL herr_t H5F__flush(H5F_t *f); +H5_DLL htri_t H5F__is_hdf5(const char *name, hid_t fapl_id); H5_DLL ssize_t H5F__get_file_image(H5F_t *f, void *buf_ptr, size_t buf_len); -H5_DLL herr_t H5F__get_info(H5F_t *f, H5F_info2_t *finfo); -H5_DLL herr_t H5F__format_convert(H5F_t *f); -H5_DLL herr_t H5F__start_swmr_write(H5F_t *f); -H5_DLL herr_t H5F__close(H5F_t *f); -H5_DLL herr_t H5F__set_libver_bounds(H5F_t *f, H5F_libver_t low, H5F_libver_t high); -H5_DLL herr_t H5F__get_cont_info(const H5F_t *f, H5VL_file_cont_info_t *info); -H5_DLL herr_t H5F__vfd_swmr_end_tick(H5F_t *f); -H5_DLL herr_t H5F__vfd_swmr_disable_end_of_tick(H5F_t *f); -H5_DLL herr_t H5F__vfd_swmr_enable_end_of_tick(H5F_t *f); +H5_DLL herr_t H5F__get_info(H5F_t *f, H5F_info2_t *finfo); +H5_DLL herr_t H5F__format_convert(H5F_t *f); +H5_DLL herr_t H5F__start_swmr_write(H5F_t *f); +H5_DLL herr_t H5F__close(H5F_t *f); +H5_DLL herr_t H5F__set_libver_bounds(H5F_t *f, H5F_libver_t low, H5F_libver_t high); +H5_DLL herr_t H5F__get_cont_info(const H5F_t *f, H5VL_file_cont_info_t *info); +H5_DLL herr_t H5F__vfd_swmr_end_tick(H5F_t *f); +H5_DLL herr_t H5F__vfd_swmr_disable_end_of_tick(H5F_t *f); +H5_DLL herr_t H5F__vfd_swmr_enable_end_of_tick(H5F_t *f); /* File mount related routines */ H5_DLL herr_t H5F__mount(H5G_loc_t *loc, const char *name, H5F_t *child, hid_t plist_id); @@ -546,13 +542,15 @@ H5_DLL herr_t H5F__super_free(H5F_super_t *sblock); /* Superblock extension related routines */ H5_DLL herr_t H5F__super_ext_open(H5F_t *f, haddr_t ext_addr, H5O_loc_t *ext_ptr); -H5_DLL herr_t H5F__super_ext_write_msg(H5F_t *f, unsigned id, void *mesg, hbool_t may_create, unsigned mesg_flags); +H5_DLL herr_t H5F__super_ext_write_msg(H5F_t *f, unsigned id, void *mesg, hbool_t may_create, + unsigned mesg_flags); H5_DLL herr_t H5F__super_ext_remove_msg(H5F_t *f, unsigned id); H5_DLL herr_t H5F__super_ext_close(H5F_t *f, H5O_loc_t *ext_ptr, hbool_t was_created); /* Metadata accumulator routines */ H5_DLL herr_t H5F__accum_read(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t size, void *buf); -H5_DLL herr_t H5F__accum_write(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t size, const void *buf); +H5_DLL herr_t H5F__accum_write(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t size, + const void *buf); H5_DLL herr_t H5F__accum_free(H5F_shared_t *f, H5FD_mem_t type, haddr_t addr, hsize_t size); H5_DLL herr_t H5F__accum_flush(H5F_shared_t *f_sh); H5_DLL herr_t H5F__accum_reset(H5F_shared_t *f_sh, hbool_t flush); @@ -560,20 +558,20 @@ H5_DLL herr_t H5F__accum_reset(H5F_shared_t *f_sh, hbool_t flush); /* Shared file list related routines */ H5_DLL herr_t H5F__sfile_add(H5F_shared_t *shared); H5_DLL H5F_shared_t *H5F__sfile_search(H5FD_t *lf); -H5_DLL herr_t H5F__sfile_remove(H5F_shared_t *shared); +H5_DLL herr_t H5F__sfile_remove(H5F_shared_t *shared); /* External file cache routines */ H5_DLL H5F_efc_t *H5F__efc_create(unsigned max_nfiles); -H5_DLL H5F_t *H5F__efc_open(H5F_t *parent, const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id); +H5_DLL H5F_t * H5F__efc_open(H5F_t *parent, const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id); H5_DLL unsigned H5F__efc_max_nfiles(H5F_efc_t *efc); -H5_DLL herr_t H5F__efc_release(H5F_efc_t *efc); -H5_DLL herr_t H5F__efc_destroy(H5F_efc_t *efc); -H5_DLL herr_t H5F__efc_try_close(H5F_t *f); +H5_DLL herr_t H5F__efc_release(H5F_efc_t *efc); +H5_DLL herr_t H5F__efc_destroy(H5F_efc_t *efc); +H5_DLL herr_t H5F__efc_try_close(H5F_t *f); /* Space allocation routines */ H5_DLL haddr_t H5F__alloc(H5F_t *f, H5F_mem_t type, hsize_t size, haddr_t *frag_addr, hsize_t *frag_size); -H5_DLL herr_t H5F__free(H5F_t *f, H5F_mem_t type, haddr_t addr, hsize_t size); -H5_DLL htri_t H5F__try_extend(H5F_t *f, H5FD_mem_t type, haddr_t blk_end, hsize_t extra_requested); +H5_DLL herr_t H5F__free(H5F_t *f, H5F_mem_t type, haddr_t addr, hsize_t size); +H5_DLL htri_t H5F__try_extend(H5F_t *f, H5FD_mem_t type, haddr_t blk_end, hsize_t extra_requested); /* Functions that get/retrieve values from VFD layer */ H5_DLL herr_t H5F__set_eoa(const H5F_t *f, H5F_mem_t type, haddr_t addr); @@ -593,11 +591,9 @@ H5_DLL herr_t H5F__get_sbe_addr_test(hid_t file_id, haddr_t *sbe_addr); /* VFD SWMR testing routines */ H5_DLL herr_t H5F__vfd_swmr_writer_create_open_flush_test(hid_t file_id, hbool_t create); -H5_DLL herr_t H5F__vfd_swmr_writer_md_test(hid_t, unsigned, - struct H5FD_vfd_swmr_idx_entry_t *, unsigned); +H5_DLL herr_t H5F__vfd_swmr_writer_md_test(hid_t, unsigned, struct H5FD_vfd_swmr_idx_entry_t *, unsigned); H5_DLL htri_t H5F__same_file_test(hid_t file_id1, hid_t file_id2); #endif /* H5F_TESTING */ #endif /* _H5Fpkg_H */ - |