summaryrefslogtreecommitdiffstats
path: root/src/H5FDpublic.h
diff options
context:
space:
mode:
authorRaymond Lu <songyulu@hdfgroup.org>2001-12-11 19:53:44 (GMT)
committerRaymond Lu <songyulu@hdfgroup.org>2001-12-11 19:53:44 (GMT)
commitd28fd08f4a9593bd8bb51ebc17b8b6555b3885cd (patch)
tree61e5d32198fc92bdfb2b98115269991f3fadd53b /src/H5FDpublic.h
parent33ed41455eff31751d3d9d635140996ebbc61a4e (diff)
downloadhdf5-d28fd08f4a9593bd8bb51ebc17b8b6555b3885cd.zip
hdf5-d28fd08f4a9593bd8bb51ebc17b8b6555b3885cd.tar.gz
hdf5-d28fd08f4a9593bd8bb51ebc17b8b6555b3885cd.tar.bz2
[svn-r4696]
Purpose: Modify H5Fclose behavior Description: The HDF5 actual file close behaves in several ways in terms of if there are still objects(dataset, group, datatype) opened in file. Solution: Added a new file access property, file close degree. It has four values, H5F_CLOSE_DEFAULT H5F_CLOSE_WEAK H5F_CLOSE_SEMI H5F_CLOSE_STRONG The way a file is closed is decided by these values. Platforms tested: IRIX64 6.5, SunOS 5.6, FreeBSD 4.4
Diffstat (limited to 'src/H5FDpublic.h')
-rw-r--r--src/H5FDpublic.h36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/H5FDpublic.h b/src/H5FDpublic.h
index 66358be..d288307 100644
--- a/src/H5FDpublic.h
+++ b/src/H5FDpublic.h
@@ -9,6 +9,7 @@
#define _H5FDpublic_H
#include "H5public.h"
+#include "H5Fpublic.h" /*for H5F_close_degree_t */
#define H5_HAVE_VFL 1 /*define a convenient app feature test*/
#define H5FD_VFD_DEFAULT 0 /* Default VFL driver value */
@@ -108,6 +109,7 @@ typedef struct H5FD_t H5FD_t;
typedef struct H5FD_class_t {
const char *name;
haddr_t maxaddr;
+ H5F_close_degree_t fc_degree;
hsize_t (*sb_size)(H5FD_t *file);
herr_t (*sb_encode)(H5FD_t *file, char *name/*out*/,
unsigned char *p/*out*/);
@@ -149,28 +151,28 @@ typedef struct H5FD_free_t {
* declared here and the driver appends private fields in memory.
*/
struct H5FD_t {
- hid_t driver_id; /*driver ID for this file */
- const H5FD_class_t *cls; /*constant class info */
+ hid_t driver_id; /*driver ID for this file*/
+ const H5FD_class_t *cls; /*constant class info */
- unsigned long feature_flags; /* VFL Driver feature Flags */
- hsize_t threshold; /* Threshold for alignment */
- hsize_t alignment; /* Allocation alignment */
+ unsigned long feature_flags; /* VFL Driver feature Flags */
+ hsize_t threshold; /* Threshold for alignment */
+ hsize_t alignment; /* Allocation alignment */
/* Metadata aggregation fields */
- hsize_t def_meta_block_size; /* Metadata allocation block size (if aggregating metadata) */
- hsize_t cur_meta_block_size; /* Current size of metadata allocation region left */
- haddr_t eoma; /* End of metadata allocated region */
+ hsize_t def_meta_block_size; /* Metadata allocation block size (if aggregating metadata) */
+ hsize_t cur_meta_block_size; /* Current size of metadata allocation region left */
+ haddr_t eoma; /*End of metadata allocated region*/
/* Metadata accumulator fields */
- unsigned char *meta_accum; /* Buffer to hold the accumulated metadata */
- haddr_t accum_loc; /* File location (offset) of the accumulated metadata */
- size_t accum_size; /* Size of the accumulated metadata buffer used (in bytes) */
- size_t accum_buf_size; /* Size of the accumulated metadata buffer allocated (in bytes) */
- unsigned accum_dirty; /* Flag to indicate that the accumulated metadata is dirty */
-
- haddr_t maxaddr; /*for this file, overrides class*/
- H5FD_free_t *fl[H5FD_MEM_NTYPES];/*freelist per allocation type*/
- hsize_t maxsize; /*largest object on FL, or zero */
+ unsigned char *meta_accum; /*Buffer to hold the accumulated metadata */
+ haddr_t accum_loc; /* File location (offset) of the accumulated metadata */
+ size_t accum_size; /* Size of the accumulated metadata buffer used (in bytes) */
+ size_t accum_buf_size; /* Size of the accumulated metadata buffer allocated (in bytes) */
+ unsigned accum_dirty; /* Flag to indicate that the accumulated metadata is dirty */
+
+ haddr_t maxaddr;/*for this file, overrides class*/
+ H5FD_free_t *fl[H5FD_MEM_NTYPES];/*freelist per allocation type*/
+ hsize_t maxsize;/*largest object on FL, or zero */
};
#ifdef __cplusplus