2002-08-13 02:13:27 +08:00
|
|
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
2007-02-07 22:56:24 +08:00
|
|
|
|
* Copyright by The HDF Group. *
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* Copyright by the Board of Trustees of the University of Illinois. *
|
|
|
|
|
* All rights reserved. *
|
|
|
|
|
* *
|
|
|
|
|
* This file is part of HDF5. The full HDF5 copyright notice, including *
|
|
|
|
|
* terms governing use, modification, and redistribution, is contained in *
|
|
|
|
|
* the files COPYING and Copyright.html. COPYING can be found at the root *
|
|
|
|
|
* of the source code distribution tree; Copyright.html can be found at the *
|
|
|
|
|
* root level of an installed copy of the electronic HDF5 document set and *
|
|
|
|
|
* is linked from the top-level documents page. It can also be found at *
|
2007-02-07 22:56:24 +08:00
|
|
|
|
* http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
|
|
|
|
|
* access to either file, you may request a copy from help@hdfgroup.org. *
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
|
|
2006-11-02 12:54:19 +08:00
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Created: H5Pfapl.c
|
|
|
|
|
* February 26 1998
|
|
|
|
|
* Robb Matzke <matzke@llnl.gov>
|
|
|
|
|
*
|
|
|
|
|
* Purpose: File access property list class routines
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/****************/
|
|
|
|
|
/* Module Setup */
|
|
|
|
|
/****************/
|
2002-08-13 02:13:27 +08:00
|
|
|
|
#define H5P_PACKAGE /*suppress error about including H5Ppkg */
|
|
|
|
|
|
2004-06-23 23:36:35 +08:00
|
|
|
|
|
2006-11-02 12:54:19 +08:00
|
|
|
|
/***********/
|
|
|
|
|
/* Headers */
|
|
|
|
|
/***********/
|
2002-08-13 02:13:27 +08:00
|
|
|
|
#include "H5private.h" /* Generic Functions */
|
[svn-r18357] Description:
Bring r18356 from metadata journaling merge branch to trunk:
Converge metadata journaling branch with trunk with a bunch of v1 B-tree
changes:
- Remove H5ACprivate.h header from H5Bprivate.h header
- Revise v1 B-tree client callbacks
- Get rid of H5B_serialize() by bringing it into H5B_flush()
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
2010-03-03 04:07:10 +08:00
|
|
|
|
#include "H5ACprivate.h" /* Metadata cache */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
#include "H5Dprivate.h" /* Datasets */
|
|
|
|
|
#include "H5Eprivate.h" /* Error handling */
|
|
|
|
|
#include "H5Fprivate.h" /* Files */
|
|
|
|
|
#include "H5FDprivate.h" /* File drivers */
|
|
|
|
|
#include "H5Iprivate.h" /* IDs */
|
|
|
|
|
#include "H5Ppkg.h" /* Property lists */
|
|
|
|
|
|
2007-06-12 06:27:07 +08:00
|
|
|
|
/* Includes needed to set as default file driver */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
#include "H5FDsec2.h" /* Posix unbuffered I/O file driver */
|
2007-06-12 06:27:07 +08:00
|
|
|
|
#include "H5FDstdio.h" /* Standard C buffered I/O */
|
2007-06-13 05:20:13 +08:00
|
|
|
|
#ifdef H5_HAVE_WINDOWS
|
2007-06-12 06:27:07 +08:00
|
|
|
|
#include "H5FDwindows.h" /* Windows buffered I/O */
|
2007-06-13 05:20:13 +08:00
|
|
|
|
#endif
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
|
2006-11-02 12:54:19 +08:00
|
|
|
|
/****************/
|
|
|
|
|
/* Local Macros */
|
|
|
|
|
/****************/
|
|
|
|
|
|
|
|
|
|
/* ========= File Access properties ============ */
|
|
|
|
|
/* Definitions for the initial metadata cache resize configuration */
|
|
|
|
|
#define H5F_ACS_META_CACHE_INIT_CONFIG_SIZE sizeof(H5AC_cache_config_t)
|
|
|
|
|
#define H5F_ACS_META_CACHE_INIT_CONFIG_DEF H5AC__DEFAULT_CACHE_CONFIG
|
2008-11-13 02:07:51 +08:00
|
|
|
|
/* Definitions for size of raw data chunk cache(slots) */
|
|
|
|
|
#define H5F_ACS_DATA_CACHE_NUM_SLOTS_SIZE sizeof(size_t)
|
|
|
|
|
#define H5F_ACS_DATA_CACHE_NUM_SLOTS_DEF 521
|
2006-11-02 12:54:19 +08:00
|
|
|
|
/* Definition for size of raw data chunk cache(bytes) */
|
|
|
|
|
#define H5F_ACS_DATA_CACHE_BYTE_SIZE_SIZE sizeof(size_t)
|
|
|
|
|
#define H5F_ACS_DATA_CACHE_BYTE_SIZE_DEF (1024*1024)
|
|
|
|
|
/* Definition for preemption read chunks first */
|
|
|
|
|
#define H5F_ACS_PREEMPT_READ_CHUNKS_SIZE sizeof(double)
|
|
|
|
|
#define H5F_ACS_PREEMPT_READ_CHUNKS_DEF 0.75
|
|
|
|
|
/* Definition for threshold for alignment */
|
|
|
|
|
#define H5F_ACS_ALIGN_THRHD_SIZE sizeof(hsize_t)
|
|
|
|
|
#define H5F_ACS_ALIGN_THRHD_DEF 1
|
|
|
|
|
/* Definition for alignment */
|
|
|
|
|
#define H5F_ACS_ALIGN_SIZE sizeof(hsize_t)
|
|
|
|
|
#define H5F_ACS_ALIGN_DEF 1
|
|
|
|
|
/* Definition for minimum metadata allocation block size (when
|
|
|
|
|
aggregating metadata allocations. */
|
|
|
|
|
#define H5F_ACS_META_BLOCK_SIZE_SIZE sizeof(hsize_t)
|
|
|
|
|
#define H5F_ACS_META_BLOCK_SIZE_DEF 2048
|
|
|
|
|
/* Definition for maximum sieve buffer size (when data sieving
|
|
|
|
|
is allowed by file driver */
|
|
|
|
|
#define H5F_ACS_SIEVE_BUF_SIZE_SIZE sizeof(size_t)
|
|
|
|
|
#define H5F_ACS_SIEVE_BUF_SIZE_DEF (64*1024)
|
|
|
|
|
/* Definition for minimum "small data" allocation block size (when
|
|
|
|
|
aggregating "small" raw data allocations. */
|
|
|
|
|
#define H5F_ACS_SDATA_BLOCK_SIZE_SIZE sizeof(hsize_t)
|
|
|
|
|
#define H5F_ACS_SDATA_BLOCK_SIZE_DEF 2048
|
|
|
|
|
/* Definition for garbage-collect references */
|
|
|
|
|
#define H5F_ACS_GARBG_COLCT_REF_SIZE sizeof(unsigned)
|
|
|
|
|
#define H5F_ACS_GARBG_COLCT_REF_DEF 0
|
|
|
|
|
/* Definition for file driver ID */
|
|
|
|
|
#define H5F_ACS_FILE_DRV_ID_SIZE sizeof(hid_t)
|
2007-06-12 02:51:20 +08:00
|
|
|
|
#define H5F_ACS_FILE_DRV_ID_DEF H5_DEFAULT_VFD
|
2006-11-02 12:54:19 +08:00
|
|
|
|
/* Definition for file driver info */
|
|
|
|
|
#define H5F_ACS_FILE_DRV_INFO_SIZE sizeof(void*)
|
|
|
|
|
#define H5F_ACS_FILE_DRV_INFO_DEF NULL
|
|
|
|
|
/* Definition for file close degree */
|
|
|
|
|
#define H5F_CLOSE_DEGREE_SIZE sizeof(H5F_close_degree_t)
|
|
|
|
|
#define H5F_CLOSE_DEGREE_DEF H5F_CLOSE_DEFAULT
|
|
|
|
|
/* Definition for offset position in file for family file driver */
|
|
|
|
|
#define H5F_ACS_FAMILY_OFFSET_SIZE sizeof(hsize_t)
|
|
|
|
|
#define H5F_ACS_FAMILY_OFFSET_DEF 0
|
|
|
|
|
/* Definition for new member size of family driver. It's private
|
|
|
|
|
* property only used by h5repart */
|
[svn-r17971] Description:
Allow the core VFD to properly support opening backing store files through
symbolic links and have the external links in the file be treated in the same
way as for the sec2 driver.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-07 10:51:54 +08:00
|
|
|
|
#define H5F_ACS_FAMILY_NEWSIZE_SIZE sizeof(hsize_t)
|
|
|
|
|
#define H5F_ACS_FAMILY_NEWSIZE_DEF 0
|
2006-11-02 12:54:19 +08:00
|
|
|
|
/* Definition for whether to convert family to sec2 driver. It's private
|
|
|
|
|
* property only used by h5repart */
|
[svn-r17971] Description:
Allow the core VFD to properly support opening backing store files through
symbolic links and have the external links in the file be treated in the same
way as for the sec2 driver.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-07 10:51:54 +08:00
|
|
|
|
#define H5F_ACS_FAMILY_TO_SEC2_SIZE sizeof(hbool_t)
|
|
|
|
|
#define H5F_ACS_FAMILY_TO_SEC2_DEF FALSE
|
2006-11-02 12:54:19 +08:00
|
|
|
|
/* Definition for data type in multi file driver */
|
|
|
|
|
#define H5F_ACS_MULTI_TYPE_SIZE sizeof(H5FD_mem_t)
|
|
|
|
|
#define H5F_ACS_MULTI_TYPE_DEF H5FD_MEM_DEFAULT
|
|
|
|
|
/* Definition for 'use latest format version' flag */
|
|
|
|
|
#define H5F_ACS_LATEST_FORMAT_SIZE sizeof(hbool_t)
|
|
|
|
|
#define H5F_ACS_LATEST_FORMAT_DEF FALSE
|
[svn-r17971] Description:
Allow the core VFD to properly support opening backing store files through
symbolic links and have the external links in the file be treated in the same
way as for the sec2 driver.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-07 10:51:54 +08:00
|
|
|
|
/* Definition for whether to query the file descriptor from the core VFD
|
|
|
|
|
* instead of the memory address. (Private to library)
|
|
|
|
|
*/
|
|
|
|
|
#define H5F_ACS_WANT_POSIX_FD_SIZE sizeof(hbool_t)
|
|
|
|
|
#define H5F_ACS_WANT_POSIX_FD_DEF FALSE
|
2011-02-09 01:32:56 +08:00
|
|
|
|
/* Definition for external file cache size */
|
|
|
|
|
#define H5F_ACS_EFC_SIZE_SIZE sizeof(unsigned)
|
|
|
|
|
#define H5F_ACS_EFC_SIZE_DEF 0
|
2006-11-02 12:54:19 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/******************/
|
|
|
|
|
/* Local Typedefs */
|
|
|
|
|
/******************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/********************/
|
|
|
|
|
/* Package Typedefs */
|
|
|
|
|
/********************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/********************/
|
|
|
|
|
/* Local Prototypes */
|
|
|
|
|
/********************/
|
|
|
|
|
|
|
|
|
|
/* General routines */
|
2003-05-16 03:22:33 +08:00
|
|
|
|
static herr_t H5P_set_family_offset(H5P_genplist_t *plist, hsize_t offset);
|
|
|
|
|
static herr_t H5P_get_family_offset(H5P_genplist_t *plist, hsize_t *offset);
|
|
|
|
|
static herr_t H5P_set_multi_type(H5P_genplist_t *plist, H5FD_mem_t type);
|
|
|
|
|
static herr_t H5P_get_multi_type(H5P_genplist_t *plist, H5FD_mem_t *type);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2006-11-02 12:54:19 +08:00
|
|
|
|
/* Property class callbacks */
|
|
|
|
|
static herr_t H5P_facc_reg_prop(H5P_genclass_t *pclass);
|
|
|
|
|
static herr_t H5P_facc_create(hid_t fapl_id, void *copy_data);
|
|
|
|
|
static herr_t H5P_facc_copy(hid_t new_plist_t, hid_t old_plist_t, void *copy_data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*********************/
|
|
|
|
|
/* Package Variables */
|
|
|
|
|
/*********************/
|
|
|
|
|
|
|
|
|
|
/* File access property list class library initialization object */
|
|
|
|
|
const H5P_libclass_t H5P_CLS_FACC[1] = {{
|
|
|
|
|
"file access", /* Class name for debugging */
|
|
|
|
|
&H5P_CLS_ROOT_g, /* Parent class ID */
|
|
|
|
|
&H5P_CLS_FILE_ACCESS_g, /* Pointer to class ID */
|
|
|
|
|
&H5P_LST_FILE_ACCESS_g, /* Pointer to default property list ID */
|
|
|
|
|
H5P_facc_reg_prop, /* Default property registration routine */
|
|
|
|
|
H5P_facc_create, /* Class creation callback */
|
|
|
|
|
NULL, /* Class creation callback info */
|
|
|
|
|
H5P_facc_copy, /* Class copy callback */
|
|
|
|
|
NULL, /* Class copy callback info */
|
|
|
|
|
H5P_facc_close, /* Class close callback */
|
|
|
|
|
NULL /* Class close callback info */
|
|
|
|
|
}};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************/
|
|
|
|
|
/* Library Private Variables */
|
|
|
|
|
/*****************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*******************/
|
|
|
|
|
/* Local Variables */
|
|
|
|
|
/*******************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_facc_reg_prop
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Register the file access property list class's properties
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* October 31, 2006
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
static herr_t
|
|
|
|
|
H5P_facc_reg_prop(H5P_genclass_t *pclass)
|
|
|
|
|
{
|
|
|
|
|
H5AC_cache_config_t mdc_initCacheCfg = H5F_ACS_META_CACHE_INIT_CONFIG_DEF; /* Default metadata cache settings */
|
2008-11-13 02:07:51 +08:00
|
|
|
|
size_t rdcc_nslots = H5F_ACS_DATA_CACHE_NUM_SLOTS_DEF; /* Default raw data chunk cache # of slots */
|
2006-11-02 12:54:19 +08:00
|
|
|
|
size_t rdcc_nbytes = H5F_ACS_DATA_CACHE_BYTE_SIZE_DEF; /* Default raw data chunk cache # of bytes */
|
|
|
|
|
double rdcc_w0 = H5F_ACS_PREEMPT_READ_CHUNKS_DEF; /* Default raw data chunk cache dirty ratio */
|
|
|
|
|
hsize_t threshold = H5F_ACS_ALIGN_THRHD_DEF; /* Default allocation alignment threshold */
|
|
|
|
|
hsize_t alignment = H5F_ACS_ALIGN_DEF; /* Default allocation alignment value */
|
|
|
|
|
hsize_t meta_block_size = H5F_ACS_META_BLOCK_SIZE_DEF; /* Default metadata allocation block size */
|
|
|
|
|
size_t sieve_buf_size = H5F_ACS_SIEVE_BUF_SIZE_DEF; /* Default raw data I/O sieve buffer size */
|
|
|
|
|
hsize_t sdata_block_size = H5F_ACS_SDATA_BLOCK_SIZE_DEF; /* Default small data allocation block size */
|
|
|
|
|
unsigned gc_ref = H5F_ACS_GARBG_COLCT_REF_DEF; /* Default garbage collection for references setting */
|
|
|
|
|
hid_t driver_id = H5F_ACS_FILE_DRV_ID_DEF; /* Default VFL driver ID */
|
|
|
|
|
void *driver_info = H5F_ACS_FILE_DRV_INFO_DEF; /* Default VFL driver info */
|
|
|
|
|
H5F_close_degree_t close_degree = H5F_CLOSE_DEGREE_DEF; /* Default file close degree */
|
|
|
|
|
hsize_t family_offset = H5F_ACS_FAMILY_OFFSET_DEF; /* Default offset for family VFD */
|
|
|
|
|
hsize_t family_newsize = H5F_ACS_FAMILY_NEWSIZE_DEF; /* Default size of new files for family VFD */
|
|
|
|
|
hbool_t family_to_sec2 = H5F_ACS_FAMILY_TO_SEC2_DEF; /* Default ?? for family VFD */
|
|
|
|
|
H5FD_mem_t mem_type = H5F_ACS_MULTI_TYPE_DEF; /* Default file space type for multi VFD */
|
|
|
|
|
hbool_t latest_format = H5F_ACS_LATEST_FORMAT_DEF; /* Default setting for "use the latest version of the format" flag */
|
[svn-r17971] Description:
Allow the core VFD to properly support opening backing store files through
symbolic links and have the external links in the file be treated in the same
way as for the sec2 driver.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-07 10:51:54 +08:00
|
|
|
|
hbool_t want_posix_fd = H5F_ACS_WANT_POSIX_FD_DEF; /* Default setting for retrieving 'handle' from core VFD */
|
2011-02-09 01:32:56 +08:00
|
|
|
|
unsigned efc_size = H5F_ACS_EFC_SIZE_DEF; /* Default external file cache size */
|
2006-11-02 12:54:19 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* Return value */
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI_NOINIT
|
2006-11-02 12:54:19 +08:00
|
|
|
|
|
|
|
|
|
/* Register the initial metadata cache resize configuration */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_META_CACHE_INIT_CONFIG_NAME, H5F_ACS_META_CACHE_INIT_CONFIG_SIZE, &mdc_initCacheCfg, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the size of raw data chunk cache (elements) */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_DATA_CACHE_NUM_SLOTS_NAME, H5F_ACS_DATA_CACHE_NUM_SLOTS_SIZE, &rdcc_nslots, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the size of raw data chunk cache(bytes) */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_DATA_CACHE_BYTE_SIZE_NAME, H5F_ACS_DATA_CACHE_BYTE_SIZE_SIZE, &rdcc_nbytes, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the preemption for reading chunks */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_PREEMPT_READ_CHUNKS_NAME, H5F_ACS_PREEMPT_READ_CHUNKS_SIZE, &rdcc_w0, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the threshold for alignment */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_ALIGN_THRHD_NAME, H5F_ACS_ALIGN_THRHD_SIZE, &threshold, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the alignment */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_ALIGN_NAME, H5F_ACS_ALIGN_SIZE, &alignment, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the minimum metadata allocation block size */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_META_BLOCK_SIZE_NAME, H5F_ACS_META_BLOCK_SIZE_SIZE, &meta_block_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the maximum sieve buffer size */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_SIEVE_BUF_SIZE_NAME, H5F_ACS_SIEVE_BUF_SIZE_SIZE, &sieve_buf_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the minimum "small data" allocation block size */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_SDATA_BLOCK_SIZE_NAME, H5F_ACS_SDATA_BLOCK_SIZE_SIZE, &sdata_block_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the garbage collection reference */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_GARBG_COLCT_REF_NAME, H5F_ACS_GARBG_COLCT_REF_SIZE, &gc_ref, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the file driver ID */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_FILE_DRV_ID_NAME, H5F_ACS_FILE_DRV_ID_SIZE, &driver_id, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the file driver info */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_FILE_DRV_INFO_NAME, H5F_ACS_FILE_DRV_INFO_SIZE, &driver_info, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the file close degree */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_CLOSE_DEGREE_NAME, H5F_CLOSE_DEGREE_SIZE, &close_degree, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the offset of family driver info */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_FAMILY_OFFSET_NAME, H5F_ACS_FAMILY_OFFSET_SIZE, &family_offset, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the private property of new family file size. It's used by h5repart only. */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_FAMILY_NEWSIZE_NAME, H5F_ACS_FAMILY_NEWSIZE_SIZE, &family_newsize, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the private property of whether convert family to sec2 driver. It's used by h5repart only. */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_FAMILY_TO_SEC2_NAME, H5F_ACS_FAMILY_TO_SEC2_SIZE, &family_to_sec2, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the data type of multi driver info */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_MULTI_TYPE_NAME, H5F_ACS_MULTI_TYPE_SIZE, &mem_type, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
|
|
|
|
/* Register the 'use the latest version of the format' flag */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_LATEST_FORMAT_NAME, H5F_ACS_LATEST_FORMAT_SIZE, &latest_format, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
[svn-r17971] Description:
Allow the core VFD to properly support opening backing store files through
symbolic links and have the external links in the file be treated in the same
way as for the sec2 driver.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-07 10:51:54 +08:00
|
|
|
|
/* Register the private property of whether to retrieve the file descriptor from the core VFD */
|
|
|
|
|
/* (used internally to the library only) */
|
[svn-r18346] Description:
Bring Coverity fixes back from branch to trunk:
r18336:
Fix coverity issues 275, 276, 277, 323, 432, 433, and 434
r18337:
Fix Coverity issue #106: release free space section node on error
r18338:
Fixed Coverity #94 - In H5P_register, new_class wasn't closed when there's an
error after it's created.
r18339:
Fix Coverity #185 - In test_conv_str_1, BUF wasn't freed when there's an error
in this function.
r18340:
Correct error in r18337 that wasn't releasing indirect fractal heap block
early enough.
r18341:
Close nodes if any failed in the middle of allocating new nodes. Coverity 140
and 141
r18342:
Correct [another] problem w/r18337.
r18343:
Fix coverity items 185, 20, and 21.
r18344:
Fix Coverity 213 - In H5FD_family_close, the double pointer file->memb was
dereferenced without NULL checking
(We believe).
r18345:
Fix Coverity issue # 210; removed NULL check after pointer dereferenced in
H5HFdblock.c. Also assigned NULL to pointer in H5Pint.c to fix segmentation
fault.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2010-02-28 04:08:03 +08:00
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_WANT_POSIX_FD_NAME, H5F_ACS_WANT_POSIX_FD_SIZE, &want_posix_fd, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
[svn-r17971] Description:
Allow the core VFD to properly support opening backing store files through
symbolic links and have the external links in the file be treated in the same
way as for the sec2 driver.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-07 10:51:54 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
2011-02-09 01:32:56 +08:00
|
|
|
|
/* Register the external file cache size */
|
|
|
|
|
if(H5P_register_real(pclass, H5F_ACS_EFC_SIZE_NAME, H5F_ACS_EFC_SIZE_SIZE, &efc_size, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
|
|
|
|
|
2006-11-02 12:54:19 +08:00
|
|
|
|
done:
|
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
|
|
|
|
} /* end H5P_facc_reg_prop() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_facc_create
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Callback routine which is called whenever a file access
|
|
|
|
|
* property list is closed. This routine performs any generic
|
|
|
|
|
* initialization needed on the properties the library put into
|
|
|
|
|
* the list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: Non-negative
|
|
|
|
|
* Failure: Negative
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
|
|
|
|
*
|
|
|
|
|
*----------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
/* ARGSUSED */
|
|
|
|
|
static herr_t
|
|
|
|
|
H5P_facc_create(hid_t fapl_id, void UNUSED *copy_data)
|
|
|
|
|
{
|
|
|
|
|
hid_t driver_id;
|
|
|
|
|
H5P_genplist_t *plist; /* Property list */
|
|
|
|
|
herr_t ret_value = SUCCEED;
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI_NOINIT
|
2006-11-02 12:54:19 +08:00
|
|
|
|
|
|
|
|
|
/* Check argument */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id)))
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
|
|
|
|
|
|
|
|
|
|
/* Retrieve driver ID property */
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver ID")
|
|
|
|
|
|
|
|
|
|
if(driver_id > 0) {
|
|
|
|
|
void *driver_info;
|
|
|
|
|
|
|
|
|
|
/* Retrieve driver info property */
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_FILE_DRV_INFO_NAME, &driver_info) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver info")
|
|
|
|
|
|
|
|
|
|
/* Set the driver for the property list */
|
|
|
|
|
if(H5FD_fapl_open(plist, driver_id, driver_info) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver")
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
done:
|
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
|
|
|
|
} /* end H5P_facc_create() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_facc_copy
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Callback routine which is called whenever a file access
|
|
|
|
|
* property list is copied. This routine performs any generic
|
|
|
|
|
* copy needed on the properties.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: Non-negative
|
|
|
|
|
* Failure: Negative
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
/* ARGSUSED */
|
|
|
|
|
static herr_t
|
|
|
|
|
H5P_facc_copy(hid_t dst_fapl_id, hid_t src_fapl_id, void UNUSED *copy_data)
|
|
|
|
|
{
|
|
|
|
|
hid_t driver_id;
|
|
|
|
|
H5P_genplist_t *src_plist; /* Source property list */
|
|
|
|
|
herr_t ret_value = SUCCEED;
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI_NOINIT
|
2006-11-02 12:54:19 +08:00
|
|
|
|
|
|
|
|
|
/* Get driver ID from source property list */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(NULL == (src_plist = (H5P_genplist_t *)H5I_object(src_fapl_id)))
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't get property list")
|
|
|
|
|
if(H5P_get(src_plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver ID")
|
|
|
|
|
|
|
|
|
|
if(driver_id > 0) {
|
|
|
|
|
H5P_genplist_t *dst_plist; /* Destination property list */
|
|
|
|
|
void *driver_info;
|
|
|
|
|
|
|
|
|
|
/* Get driver info from source property list */
|
|
|
|
|
if(H5P_get(src_plist, H5F_ACS_FILE_DRV_INFO_NAME, &driver_info) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver info")
|
|
|
|
|
|
|
|
|
|
/* Set the driver for the destination property list */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(NULL == (dst_plist = (H5P_genplist_t *)H5I_object(dst_fapl_id)))
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "can't get property list")
|
|
|
|
|
if(H5FD_fapl_open(dst_plist, driver_id, driver_info) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver")
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
done:
|
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
|
|
|
|
} /* end H5P_facc_copy() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_facc_close
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Callback routine which is called whenever a file access
|
|
|
|
|
* property list is closed. This routine performs any generic
|
|
|
|
|
* cleanup needed on the properties.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: Non-negative
|
|
|
|
|
* Failure: Negative
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
|
|
|
|
*
|
|
|
|
|
*---------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
/* ARGSUSED */
|
|
|
|
|
herr_t
|
|
|
|
|
H5P_facc_close(hid_t fapl_id, void UNUSED *close_data)
|
|
|
|
|
{
|
|
|
|
|
hid_t driver_id;
|
|
|
|
|
H5P_genplist_t *plist; /* Property list */
|
|
|
|
|
herr_t ret_value = SUCCEED;
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI(FAIL)
|
2006-11-02 12:54:19 +08:00
|
|
|
|
|
|
|
|
|
/* Check argument */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id)))
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
|
|
|
|
|
|
|
|
|
|
/* Get driver ID property */
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
|
|
|
|
HGOTO_DONE(FAIL) /* Can't return errors when library is shutting down */
|
|
|
|
|
|
|
|
|
|
if(driver_id > 0) {
|
|
|
|
|
void *driver_info;
|
|
|
|
|
|
|
|
|
|
/* Get driver info property */
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_FILE_DRV_INFO_NAME, &driver_info) < 0)
|
|
|
|
|
HGOTO_DONE(FAIL) /* Can't return errors when library is shutting down */
|
|
|
|
|
|
|
|
|
|
/* Close the driver for the property list */
|
|
|
|
|
if(H5FD_fapl_close(driver_id, driver_info) < 0)
|
|
|
|
|
HGOTO_DONE(FAIL) /* Can't return errors when library is shutting down */
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
done:
|
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
|
|
|
|
} /* end H5P_facc_close() */
|
|
|
|
|
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_alignment
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Sets the alignment properties of a file access property list
|
|
|
|
|
* so that any file object >= THRESHOLD bytes will be aligned on
|
|
|
|
|
* an address which is a multiple of ALIGNMENT. The addresses
|
|
|
|
|
* are relative to the end of the user block; the alignment is
|
|
|
|
|
* calculated by subtracting the user block size from the
|
|
|
|
|
* absolute file address and then adjusting the address to be a
|
|
|
|
|
* multiple of ALIGNMENT.
|
|
|
|
|
*
|
|
|
|
|
* Default values for THRESHOLD and ALIGNMENT are one, implying
|
|
|
|
|
* no alignment. Generally the default values will result in
|
|
|
|
|
* the best performance for single-process access to the file.
|
|
|
|
|
* For MPI-IO and other parallel systems, choose an alignment
|
|
|
|
|
* which is a multiple of the disk block size.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Tuesday, June 9, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
* Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed file access property list mechanism to the new
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* generic property list.
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_alignment(hid_t fapl_id, hsize_t threshold, hsize_t alignment)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE3("e", "ihh", fapl_id, threshold, alignment);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Check args */
|
|
|
|
|
if (alignment<1)
|
|
|
|
|
HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "alignment must be positive");
|
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Set values */
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_ALIGN_THRHD_NAME, &threshold) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set threshold");
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_ALIGN_NAME, &alignment) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set alignment");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_alignment
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Returns the current settings for alignment properties from a
|
|
|
|
|
* file access property list. The THRESHOLD and/or ALIGNMENT
|
|
|
|
|
* pointers may be null pointers.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Tuesday, June 9, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Raymond Lu
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list design to the new generic
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* property list.
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_alignment(hid_t fapl_id, hsize_t *threshold/*out*/,
|
|
|
|
|
hsize_t *alignment/*out*/)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* Return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE3("e", "ixx", fapl_id, threshold, alignment);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Get values */
|
|
|
|
|
if (threshold)
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_ALIGN_THRHD_NAME, threshold) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get threshold");
|
|
|
|
|
if (alignment)
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_ALIGN_NAME, alignment) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get alignment");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_set_driver
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Set the file driver (DRIVER_ID) for a file access or data
|
|
|
|
|
* transfer property list (PLIST_ID) and supply an optional
|
|
|
|
|
* struct containing the driver-specific properites
|
|
|
|
|
* (DRIVER_INFO). The driver properties will be copied into the
|
|
|
|
|
* property list and the reference count on the driver will be
|
|
|
|
|
* incremented, allowing the caller to close the driver ID but
|
|
|
|
|
* still use the property list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: Non-negative
|
|
|
|
|
*
|
|
|
|
|
* Failure: Negative
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Tuesday, August 3, 1999
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
* Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list design to the new generic
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* property list.
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5P_set_driver(H5P_genplist_t *plist, hid_t new_driver_id, const void *new_driver_info)
|
|
|
|
|
{
|
|
|
|
|
hid_t driver_id; /* VFL driver ID */
|
|
|
|
|
void *driver_info; /* VFL driver info */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* Return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI(FAIL)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(NULL == H5I_object_verify(new_driver_id, H5I_VFL))
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file driver ID")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS)) {
|
2003-10-25 03:39:23 +08:00
|
|
|
|
/* Get the current driver information */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
|
2008-08-22 04:30:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver ID")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
if(H5P_get(plist, H5F_ACS_FILE_DRV_INFO_NAME, &driver_info) < 0)
|
2008-08-22 04:30:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL,"can't get driver info")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2003-10-25 03:39:23 +08:00
|
|
|
|
/* Close the driver for the property list */
|
|
|
|
|
if(H5FD_fapl_close(driver_id, driver_info)<0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't reset driver")
|
|
|
|
|
|
|
|
|
|
/* Set the driver for the property list */
|
|
|
|
|
if(H5FD_fapl_open(plist, new_driver_id, new_driver_info)<0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver")
|
2008-08-22 04:30:19 +08:00
|
|
|
|
} else if(TRUE == H5P_isa_class(plist->plist_id, H5P_DATASET_XFER)) {
|
2002-08-13 02:13:27 +08:00
|
|
|
|
/* Get the current driver information */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &driver_id) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve VFL driver ID")
|
|
|
|
|
if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &driver_info) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve VFL driver info")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2003-10-25 03:39:23 +08:00
|
|
|
|
/* Close the driver for the property list */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(H5FD_dxpl_close(driver_id, driver_info) < 0)
|
2003-10-25 03:39:23 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't reset driver")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2003-10-25 03:39:23 +08:00
|
|
|
|
/* Set the driver for the property list */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(H5FD_dxpl_open(plist, new_driver_id, new_driver_info) < 0)
|
2003-10-25 03:39:23 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
} else {
|
2008-08-22 04:30:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
done:
|
2008-08-22 04:30:19 +08:00
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
} /* end H5P_set_driver() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_driver
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Set the file driver (DRIVER_ID) for a file access or data
|
|
|
|
|
* transfer property list (PLIST_ID) and supply an optional
|
|
|
|
|
* struct containing the driver-specific properites
|
|
|
|
|
* (DRIVER_INFO). The driver properties will be copied into the
|
|
|
|
|
* property list and the reference count on the driver will be
|
|
|
|
|
* incremented, allowing the caller to close the driver ID but
|
|
|
|
|
* still use the property list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: Non-negative
|
|
|
|
|
*
|
|
|
|
|
* Failure: Negative
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Tuesday, August 3, 1999
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
* Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list design to the new generic
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* property list.
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_driver(hid_t plist_id, hid_t new_driver_id, const void *new_driver_info)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* Return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2007-03-09 00:57:36 +08:00
|
|
|
|
H5TRACE3("e", "ii*x", plist_id, new_driver_id, new_driver_info);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Check arguments */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(NULL == (plist = (H5P_genplist_t *)H5I_object_verify(plist_id, H5I_GENPROP_LST)))
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
|
|
|
|
|
if(NULL == H5I_object_verify(new_driver_id, H5I_VFL))
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file driver ID")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Set the driver */
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(H5P_set_driver(plist, new_driver_id, new_driver_info) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set driver info")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
done:
|
2008-08-22 04:30:19 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
} /* end H5Pset_driver() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_get_driver
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Return the ID of the low-level file driver. PLIST_ID should
|
|
|
|
|
* be a file access property list or data transfer propert list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: A low-level driver ID which is the same ID
|
|
|
|
|
* used when the driver was set for the property
|
|
|
|
|
* list. The driver ID is only valid as long as
|
|
|
|
|
* the file driver remains registered.
|
|
|
|
|
*
|
|
|
|
|
* Failure: Negative
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Thursday, February 26, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
* Robb Matzke, 1999-08-03
|
|
|
|
|
* Rewritten to use the virtual file layer.
|
|
|
|
|
*
|
|
|
|
|
* Robb Matzke, 1999-08-05
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* If the driver ID is H5FD_VFD_DEFAULT then substitute the
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* current value of H5FD_SEC2.
|
|
|
|
|
*
|
|
|
|
|
* Quincey Koziol 2000-11-28
|
|
|
|
|
* Added internal function..
|
|
|
|
|
*
|
|
|
|
|
* Raymond Lu, 2001-10-23
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list design to the new generic
|
|
|
|
|
* property list.
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
hid_t
|
|
|
|
|
H5P_get_driver(H5P_genplist_t *plist)
|
|
|
|
|
{
|
|
|
|
|
hid_t ret_value=FAIL; /* Return value */
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI(FAIL)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the current driver ID */
|
|
|
|
|
if(TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &ret_value) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get driver ID");
|
|
|
|
|
} else if( TRUE == H5P_isa_class(plist->plist_id, H5P_DATASET_XFER) ) {
|
|
|
|
|
if(H5P_get(plist, H5D_XFER_VFL_ID_NAME, &ret_value)<0)
|
|
|
|
|
HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID");
|
|
|
|
|
} else {
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (H5FD_VFD_DEFAULT==ret_value)
|
2007-06-12 02:51:20 +08:00
|
|
|
|
ret_value = H5_DEFAULT_VFD;
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_driver
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Return the ID of the low-level file driver. PLIST_ID should
|
|
|
|
|
* be a file access property list or data transfer propert list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: A low-level driver ID which is the same ID
|
|
|
|
|
* used when the driver was set for the property
|
|
|
|
|
* list. The driver ID is only valid as long as
|
|
|
|
|
* the file driver remains registered.
|
|
|
|
|
*
|
|
|
|
|
* Failure: Negative
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Thursday, February 26, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
* Robb Matzke, 1999-08-03
|
|
|
|
|
* Rewritten to use the virtual file layer.
|
|
|
|
|
*
|
|
|
|
|
* Robb Matzke, 1999-08-05
|
|
|
|
|
* If the driver ID is H5FD_VFD_DEFAULT then substitute the current value of
|
|
|
|
|
* H5FD_SEC2.
|
|
|
|
|
*
|
|
|
|
|
* Quincey Koziol 2000-11-28
|
|
|
|
|
* Added internal function..
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
hid_t
|
|
|
|
|
H5Pget_driver(hid_t plist_id)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
|
|
|
|
hid_t ret_value; /* Return value */
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE1("i", "i", plist_id);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(NULL == (plist = (H5P_genplist_t *)H5I_object_verify(plist_id, H5I_GENPROP_LST)))
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
ret_value = H5P_get_driver(plist);
|
|
|
|
|
|
|
|
|
|
done:
|
2008-08-22 04:30:19 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
|
|
|
|
} /* end H5Pget_driver() */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_get_driver_info
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Returns a pointer directly to the file driver-specific
|
|
|
|
|
* information of a file access or data transfer property list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: Ptr to *uncopied* driver specific data
|
|
|
|
|
* structure if any.
|
|
|
|
|
*
|
|
|
|
|
* Failure: NULL. Null is also returned if the driver has
|
|
|
|
|
* not registered any driver-specific properties
|
|
|
|
|
* although no error is pushed on the stack in
|
|
|
|
|
* this case.
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Wednesday, August 4, 1999
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
* Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list design to the new generic
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* property list.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
void *
|
|
|
|
|
H5P_get_driver_info(H5P_genplist_t *plist)
|
|
|
|
|
{
|
|
|
|
|
void *ret_value=NULL;
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI(NULL)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the current driver info */
|
|
|
|
|
if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_FILE_DRV_INFO_NAME, &ret_value) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,NULL,"can't get driver info");
|
|
|
|
|
} else if( TRUE == H5P_isa_class(plist->plist_id, H5P_DATASET_XFER) ) {
|
|
|
|
|
if(H5P_get(plist, H5D_XFER_VFL_INFO_NAME, &ret_value)<0)
|
|
|
|
|
HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, NULL, "Can't retrieve VFL driver ID");
|
|
|
|
|
} else {
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access or data transfer property list");
|
|
|
|
|
}
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-08-13 02:13:27 +08:00
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
} /* end H5P_get_driver_info() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_driver_info
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Returns a pointer directly to the file driver-specific
|
|
|
|
|
* information of a file access or data transfer property list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Success: Ptr to *uncopied* driver specific data
|
|
|
|
|
* structure if any.
|
|
|
|
|
*
|
|
|
|
|
* Failure: NULL. Null is also returned if the driver has
|
|
|
|
|
* not registered any driver-specific properties
|
|
|
|
|
* although no error is pushed on the stack in
|
|
|
|
|
* this case.
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Wednesday, August 4, 1999
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
* Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list design to the new generic
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* property list.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
void *
|
|
|
|
|
H5Pget_driver_info(hid_t plist_id)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
|
|
|
|
void *ret_value; /* Return value */
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(NULL)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(NULL == (plist = (H5P_genplist_t *)H5I_object_verify(plist_id, H5I_GENPROP_LST)))
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a property list")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2008-08-22 04:30:19 +08:00
|
|
|
|
if(NULL == (ret_value = H5P_get_driver_info(plist)))
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get driver info")
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-08-13 02:13:27 +08:00
|
|
|
|
done:
|
2008-08-22 04:30:19 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
} /* end H5Pget_driver_info() */
|
|
|
|
|
|
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_family_offset
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Purpose: Set offset for family driver. This file access property
|
|
|
|
|
* list will be passed to H5Fget_vfd_handle or H5FDget_vfd_handle
|
|
|
|
|
* to retrieve VFD file handle.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
|
|
|
|
* Return: Success: Non-negative value.
|
|
|
|
|
*
|
|
|
|
|
* Failure: Negative value.
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Sep 17, 2002
|
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Modifications:
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2003-05-16 03:22:33 +08:00
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_family_offset(hid_t fapl_id, hsize_t offset)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "ih", fapl_id, offset);
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(H5P_DEFAULT == fapl_id)
|
[svn-r6252] Purpose:
Lots of performance improvements & a couple new internal API interfaces.
Description:
Performance Improvements:
- Cached file offset & length sizes in shared file struct, to avoid
constantly looking them up in the FCPL.
- Generic property improvements:
- Added "revision" number to generic property classes to speed
up comparisons.
- Changed method of storing properties from using a hash-table
to the TBBT routines in the library.
- Share the propery names between classes and the lists derived
from them.
- Removed redundant 'def_value' buffer from each property.
- Switching code to use a "copy on write" strategy for
properties in each list, where the properties in each list
are shared with the properties in the class, until a
property's value is changed in a list.
- Fixed error in layout code which was allocating too many buffers.
- Redefined public macros of the form (H5open()/H5check, <variable>)
internally to only be (<variable>), avoiding innumerable useless
calls to H5open() and H5check_version().
- Reuse already zeroed buffers in H5F_contig_fill instead of
constantly re-zeroing them.
- Don't write fill values if writing entire dataset.
- Use gettimeofday() system call instead of time() system when
checking the modification time of a dataset.
- Added reference counted string API and use it for tracking the
names of objects opening in a file (for the ID->name code).
- Removed redundant H5P_get() calls in B-tree routines.
- Redefine H5T datatype macros internally to the library, to avoid
calling H5check redundantly.
- Keep dataspace information for dataset locally instead of reading
from disk each time. Added new module to track open objects
in a file, to allow this (which will be useful eventually for
some FPH5 metadata caching issues).
- Remove H5AC_find macro which was inlining metadata cache lookups,
and call function instead.
- Remove redundant memset() calls from H5G_namei() routine.
- Remove redundant checking of object type when locating objects
in metadata cache and rely on the address only.
- Create default dataset object to use when default dataset creation
property list is used to create datasets, bypassing querying
for all the property list values.
- Use default I/O vector size when performing raw data with the
default dataset transfer property list, instead of querying for
I/O vector size.
- Remove H5P_DEFAULT internally to the library, replacing it with
more specific default property list based on the type of
property list needed.
- Remove redundant memset() calls in object header message (H5O*)
routines.
- Remove redunant memset() calls in data I/O routines.
- Split free-list allocation routines into malloc() and calloc()-
like routines, instead of one combined routine.
- Remove lots of indirection in H5O*() routines.
- Simplify metadata cache entry comparison routine (used when
flushing entire cache out).
- Only enable metadata cache statistics when H5AC_DEBUG is turned
on, instead of always tracking them.
- Simplify address comparison macro (H5F_addr_eq).
- Remove redundant metadata cache entry protections during dataset
creation by protecting the object header once and making all
the modifications necessary for the dataset creation before
unprotecting it.
- Reduce # of "number of element in extent" computations performed
by computing and storing the value during dataspace creation.
- Simplify checking for group location's file information, when file
has not been involving in file-mounting operations.
- Use binary encoding for modification time, instead of ASCII.
- Hoist H5HL_peek calls (to get information in a local heap)
out of loops in many group routine.
- Use static variable for iterators of selections, instead of
dynamically allocation them each time.
- Lookup & insert new entries in one step, avoiding traversing
group's B-tree twice.
- Fixed memory leak in H5Gget_objname_idx() routine (tangential to
performance improvements, but fixed along the way).
- Use free-list for reference counted strings.
- Don't bother copying object names into cached group entries,
since they are re-created when an object is opened.
The benchmark I used to measure these results created several thousand
small (2K) datasets in a file and wrote out the data for them. This is
Elena's "regular.c" benchmark.
These changes resulted in approximately ~4.3x speedup of the
development branch when compared to the previous code in the
development branch and ~1.4x speedup compared to the release
branch.
Additionally, these changes reduce the total memory used (code and
data) by the development branch by ~800KB, bringing the development
branch back into the same ballpark as the release branch.
I'll send out a more detailed description of the benchmark results
as a followup note.
New internal API routines:
Added "reference counted strings" API for tracking strings that get
used by multiple owners without duplicating the strings.
Added "ternary search tree" API for text->object mappings.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}
Other platforms/configurations tested?
FreeBSD 4.7 (sleipnir) serial & parallel
Solaris 2.6 (baldric) serial
2003-01-10 01:20:03 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list");
|
2002-10-01 00:31:55 +08:00
|
|
|
|
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
/* Set values */
|
|
|
|
|
if((ret_value=H5P_set_family_offset(plist, offset)) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set family offset");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_set_family_offset
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
|
|
|
|
* Purpose: Set offset for family driver. Private function for
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* H5Pset_family_offset
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Return: Success: Non-negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Failure: Negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Sep 17, 2002
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Modifications:
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2003-05-16 03:22:33 +08:00
|
|
|
|
static herr_t
|
|
|
|
|
H5P_set_family_offset(H5P_genplist_t *plist, hsize_t offset)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
{
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED;
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI(FAIL)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
|
|
|
|
if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_FAMILY_OFFSET_NAME, &offset) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL,"can't set offset for family file");
|
|
|
|
|
} else {
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
}
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_family_offset
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Purpose: Get offset for family driver. This file access property
|
|
|
|
|
* list will be passed to H5Fget_vfd_handle or H5FDget_vfd_handle
|
|
|
|
|
* to retrieve VFD file handle.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Return: Success: Non-negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Failure: Negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Sep 17, 2002
|
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Modifications:
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2003-05-16 03:22:33 +08:00
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_family_offset(hid_t fapl_id, hsize_t *offset)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "i*h", fapl_id, offset);
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(H5P_DEFAULT == fapl_id)
|
[svn-r6252] Purpose:
Lots of performance improvements & a couple new internal API interfaces.
Description:
Performance Improvements:
- Cached file offset & length sizes in shared file struct, to avoid
constantly looking them up in the FCPL.
- Generic property improvements:
- Added "revision" number to generic property classes to speed
up comparisons.
- Changed method of storing properties from using a hash-table
to the TBBT routines in the library.
- Share the propery names between classes and the lists derived
from them.
- Removed redundant 'def_value' buffer from each property.
- Switching code to use a "copy on write" strategy for
properties in each list, where the properties in each list
are shared with the properties in the class, until a
property's value is changed in a list.
- Fixed error in layout code which was allocating too many buffers.
- Redefined public macros of the form (H5open()/H5check, <variable>)
internally to only be (<variable>), avoiding innumerable useless
calls to H5open() and H5check_version().
- Reuse already zeroed buffers in H5F_contig_fill instead of
constantly re-zeroing them.
- Don't write fill values if writing entire dataset.
- Use gettimeofday() system call instead of time() system when
checking the modification time of a dataset.
- Added reference counted string API and use it for tracking the
names of objects opening in a file (for the ID->name code).
- Removed redundant H5P_get() calls in B-tree routines.
- Redefine H5T datatype macros internally to the library, to avoid
calling H5check redundantly.
- Keep dataspace information for dataset locally instead of reading
from disk each time. Added new module to track open objects
in a file, to allow this (which will be useful eventually for
some FPH5 metadata caching issues).
- Remove H5AC_find macro which was inlining metadata cache lookups,
and call function instead.
- Remove redundant memset() calls from H5G_namei() routine.
- Remove redundant checking of object type when locating objects
in metadata cache and rely on the address only.
- Create default dataset object to use when default dataset creation
property list is used to create datasets, bypassing querying
for all the property list values.
- Use default I/O vector size when performing raw data with the
default dataset transfer property list, instead of querying for
I/O vector size.
- Remove H5P_DEFAULT internally to the library, replacing it with
more specific default property list based on the type of
property list needed.
- Remove redundant memset() calls in object header message (H5O*)
routines.
- Remove redunant memset() calls in data I/O routines.
- Split free-list allocation routines into malloc() and calloc()-
like routines, instead of one combined routine.
- Remove lots of indirection in H5O*() routines.
- Simplify metadata cache entry comparison routine (used when
flushing entire cache out).
- Only enable metadata cache statistics when H5AC_DEBUG is turned
on, instead of always tracking them.
- Simplify address comparison macro (H5F_addr_eq).
- Remove redundant metadata cache entry protections during dataset
creation by protecting the object header once and making all
the modifications necessary for the dataset creation before
unprotecting it.
- Reduce # of "number of element in extent" computations performed
by computing and storing the value during dataspace creation.
- Simplify checking for group location's file information, when file
has not been involving in file-mounting operations.
- Use binary encoding for modification time, instead of ASCII.
- Hoist H5HL_peek calls (to get information in a local heap)
out of loops in many group routine.
- Use static variable for iterators of selections, instead of
dynamically allocation them each time.
- Lookup & insert new entries in one step, avoiding traversing
group's B-tree twice.
- Fixed memory leak in H5Gget_objname_idx() routine (tangential to
performance improvements, but fixed along the way).
- Use free-list for reference counted strings.
- Don't bother copying object names into cached group entries,
since they are re-created when an object is opened.
The benchmark I used to measure these results created several thousand
small (2K) datasets in a file and wrote out the data for them. This is
Elena's "regular.c" benchmark.
These changes resulted in approximately ~4.3x speedup of the
development branch when compared to the previous code in the
development branch and ~1.4x speedup compared to the release
branch.
Additionally, these changes reduce the total memory used (code and
data) by the development branch by ~800KB, bringing the development
branch back into the same ballpark as the release branch.
I'll send out a more detailed description of the benchmark results
as a followup note.
New internal API routines:
Added "reference counted strings" API for tracking strings that get
used by multiple owners without duplicating the strings.
Added "ternary search tree" API for text->object mappings.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}
Other platforms/configurations tested?
FreeBSD 4.7 (sleipnir) serial & parallel
Solaris 2.6 (baldric) serial
2003-01-10 01:20:03 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list");
|
2002-10-01 00:31:55 +08:00
|
|
|
|
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
/* Set values */
|
|
|
|
|
if((ret_value=H5P_get_family_offset(plist, offset)) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't get family offset");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2005-08-14 04:53:35 +08:00
|
|
|
|
}
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_get_family_offset
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Purpose: Get offset for family driver. Private function for
|
|
|
|
|
* H5Pget_family_offset
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Return: Success: Non-negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Failure: Negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Sep 17, 2002
|
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Modifications:
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2003-05-16 03:22:33 +08:00
|
|
|
|
static herr_t
|
|
|
|
|
H5P_get_family_offset(H5P_genplist_t *plist, hsize_t *offset)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
{
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED;
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI(FAIL)
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_FAMILY_OFFSET_NAME, offset) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL,"can't set offset for family file");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
} else {
|
2002-10-01 00:31:55 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
2005-06-03 05:00:23 +08:00
|
|
|
|
}
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_multi_type
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Purpose: Set data type for multi driver. This file access property
|
|
|
|
|
* list will be passed to H5Fget_vfd_handle or H5FDget_vfd_handle
|
|
|
|
|
* to retrieve VFD file handle.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Return: Success: Non-negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Failure: Negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Sep 17, 2002
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Modifications:
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2003-05-16 03:22:33 +08:00
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_multi_type(hid_t fapl_id, H5FD_mem_t type)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "iMt", fapl_id, type);
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(H5P_DEFAULT == fapl_id)
|
[svn-r6252] Purpose:
Lots of performance improvements & a couple new internal API interfaces.
Description:
Performance Improvements:
- Cached file offset & length sizes in shared file struct, to avoid
constantly looking them up in the FCPL.
- Generic property improvements:
- Added "revision" number to generic property classes to speed
up comparisons.
- Changed method of storing properties from using a hash-table
to the TBBT routines in the library.
- Share the propery names between classes and the lists derived
from them.
- Removed redundant 'def_value' buffer from each property.
- Switching code to use a "copy on write" strategy for
properties in each list, where the properties in each list
are shared with the properties in the class, until a
property's value is changed in a list.
- Fixed error in layout code which was allocating too many buffers.
- Redefined public macros of the form (H5open()/H5check, <variable>)
internally to only be (<variable>), avoiding innumerable useless
calls to H5open() and H5check_version().
- Reuse already zeroed buffers in H5F_contig_fill instead of
constantly re-zeroing them.
- Don't write fill values if writing entire dataset.
- Use gettimeofday() system call instead of time() system when
checking the modification time of a dataset.
- Added reference counted string API and use it for tracking the
names of objects opening in a file (for the ID->name code).
- Removed redundant H5P_get() calls in B-tree routines.
- Redefine H5T datatype macros internally to the library, to avoid
calling H5check redundantly.
- Keep dataspace information for dataset locally instead of reading
from disk each time. Added new module to track open objects
in a file, to allow this (which will be useful eventually for
some FPH5 metadata caching issues).
- Remove H5AC_find macro which was inlining metadata cache lookups,
and call function instead.
- Remove redundant memset() calls from H5G_namei() routine.
- Remove redundant checking of object type when locating objects
in metadata cache and rely on the address only.
- Create default dataset object to use when default dataset creation
property list is used to create datasets, bypassing querying
for all the property list values.
- Use default I/O vector size when performing raw data with the
default dataset transfer property list, instead of querying for
I/O vector size.
- Remove H5P_DEFAULT internally to the library, replacing it with
more specific default property list based on the type of
property list needed.
- Remove redundant memset() calls in object header message (H5O*)
routines.
- Remove redunant memset() calls in data I/O routines.
- Split free-list allocation routines into malloc() and calloc()-
like routines, instead of one combined routine.
- Remove lots of indirection in H5O*() routines.
- Simplify metadata cache entry comparison routine (used when
flushing entire cache out).
- Only enable metadata cache statistics when H5AC_DEBUG is turned
on, instead of always tracking them.
- Simplify address comparison macro (H5F_addr_eq).
- Remove redundant metadata cache entry protections during dataset
creation by protecting the object header once and making all
the modifications necessary for the dataset creation before
unprotecting it.
- Reduce # of "number of element in extent" computations performed
by computing and storing the value during dataspace creation.
- Simplify checking for group location's file information, when file
has not been involving in file-mounting operations.
- Use binary encoding for modification time, instead of ASCII.
- Hoist H5HL_peek calls (to get information in a local heap)
out of loops in many group routine.
- Use static variable for iterators of selections, instead of
dynamically allocation them each time.
- Lookup & insert new entries in one step, avoiding traversing
group's B-tree twice.
- Fixed memory leak in H5Gget_objname_idx() routine (tangential to
performance improvements, but fixed along the way).
- Use free-list for reference counted strings.
- Don't bother copying object names into cached group entries,
since they are re-created when an object is opened.
The benchmark I used to measure these results created several thousand
small (2K) datasets in a file and wrote out the data for them. This is
Elena's "regular.c" benchmark.
These changes resulted in approximately ~4.3x speedup of the
development branch when compared to the previous code in the
development branch and ~1.4x speedup compared to the release
branch.
Additionally, these changes reduce the total memory used (code and
data) by the development branch by ~800KB, bringing the development
branch back into the same ballpark as the release branch.
I'll send out a more detailed description of the benchmark results
as a followup note.
New internal API routines:
Added "reference counted strings" API for tracking strings that get
used by multiple owners without duplicating the strings.
Added "ternary search tree" API for text->object mappings.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}
Other platforms/configurations tested?
FreeBSD 4.7 (sleipnir) serial & parallel
Solaris 2.6 (baldric) serial
2003-01-10 01:20:03 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list");
|
2002-10-01 00:31:55 +08:00
|
|
|
|
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
/* Set values */
|
|
|
|
|
if((ret_value=H5P_set_multi_type(plist, type)) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set data type for multi driver");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_set_multi_type
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Purpose: Set data type for multi file driver. Private function for
|
|
|
|
|
* H5Pset_multi_type.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Return: Success: Non-negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Failure: Negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Sep 17, 2002
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Modifications:
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2003-05-16 03:22:33 +08:00
|
|
|
|
static herr_t
|
|
|
|
|
H5P_set_multi_type(H5P_genplist_t *plist, H5FD_mem_t type)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
{
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED;
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI(FAIL)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
|
|
|
|
if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_MULTI_TYPE_NAME, &type) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL,"can't set type for multi driver");
|
|
|
|
|
} else {
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access or data transfer property list");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
2005-08-14 04:53:35 +08:00
|
|
|
|
}
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_multi_type
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Purpose: Get data type for multi driver. This file access property
|
|
|
|
|
* list will be passed to H5Fget_vfd_handle or H5FDget_vfd_handle
|
|
|
|
|
* to retrieve VFD file handle.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Return: Success: Non-negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Failure: Negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Sep 17, 2002
|
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Modifications:
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2003-05-16 03:22:33 +08:00
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_multi_type(hid_t fapl_id, H5FD_mem_t *type)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "i*Mt", fapl_id, type);
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(H5P_DEFAULT == fapl_id)
|
[svn-r6252] Purpose:
Lots of performance improvements & a couple new internal API interfaces.
Description:
Performance Improvements:
- Cached file offset & length sizes in shared file struct, to avoid
constantly looking them up in the FCPL.
- Generic property improvements:
- Added "revision" number to generic property classes to speed
up comparisons.
- Changed method of storing properties from using a hash-table
to the TBBT routines in the library.
- Share the propery names between classes and the lists derived
from them.
- Removed redundant 'def_value' buffer from each property.
- Switching code to use a "copy on write" strategy for
properties in each list, where the properties in each list
are shared with the properties in the class, until a
property's value is changed in a list.
- Fixed error in layout code which was allocating too many buffers.
- Redefined public macros of the form (H5open()/H5check, <variable>)
internally to only be (<variable>), avoiding innumerable useless
calls to H5open() and H5check_version().
- Reuse already zeroed buffers in H5F_contig_fill instead of
constantly re-zeroing them.
- Don't write fill values if writing entire dataset.
- Use gettimeofday() system call instead of time() system when
checking the modification time of a dataset.
- Added reference counted string API and use it for tracking the
names of objects opening in a file (for the ID->name code).
- Removed redundant H5P_get() calls in B-tree routines.
- Redefine H5T datatype macros internally to the library, to avoid
calling H5check redundantly.
- Keep dataspace information for dataset locally instead of reading
from disk each time. Added new module to track open objects
in a file, to allow this (which will be useful eventually for
some FPH5 metadata caching issues).
- Remove H5AC_find macro which was inlining metadata cache lookups,
and call function instead.
- Remove redundant memset() calls from H5G_namei() routine.
- Remove redundant checking of object type when locating objects
in metadata cache and rely on the address only.
- Create default dataset object to use when default dataset creation
property list is used to create datasets, bypassing querying
for all the property list values.
- Use default I/O vector size when performing raw data with the
default dataset transfer property list, instead of querying for
I/O vector size.
- Remove H5P_DEFAULT internally to the library, replacing it with
more specific default property list based on the type of
property list needed.
- Remove redundant memset() calls in object header message (H5O*)
routines.
- Remove redunant memset() calls in data I/O routines.
- Split free-list allocation routines into malloc() and calloc()-
like routines, instead of one combined routine.
- Remove lots of indirection in H5O*() routines.
- Simplify metadata cache entry comparison routine (used when
flushing entire cache out).
- Only enable metadata cache statistics when H5AC_DEBUG is turned
on, instead of always tracking them.
- Simplify address comparison macro (H5F_addr_eq).
- Remove redundant metadata cache entry protections during dataset
creation by protecting the object header once and making all
the modifications necessary for the dataset creation before
unprotecting it.
- Reduce # of "number of element in extent" computations performed
by computing and storing the value during dataspace creation.
- Simplify checking for group location's file information, when file
has not been involving in file-mounting operations.
- Use binary encoding for modification time, instead of ASCII.
- Hoist H5HL_peek calls (to get information in a local heap)
out of loops in many group routine.
- Use static variable for iterators of selections, instead of
dynamically allocation them each time.
- Lookup & insert new entries in one step, avoiding traversing
group's B-tree twice.
- Fixed memory leak in H5Gget_objname_idx() routine (tangential to
performance improvements, but fixed along the way).
- Use free-list for reference counted strings.
- Don't bother copying object names into cached group entries,
since they are re-created when an object is opened.
The benchmark I used to measure these results created several thousand
small (2K) datasets in a file and wrote out the data for them. This is
Elena's "regular.c" benchmark.
These changes resulted in approximately ~4.3x speedup of the
development branch when compared to the previous code in the
development branch and ~1.4x speedup compared to the release
branch.
Additionally, these changes reduce the total memory used (code and
data) by the development branch by ~800KB, bringing the development
branch back into the same ballpark as the release branch.
I'll send out a more detailed description of the benchmark results
as a followup note.
New internal API routines:
Added "reference counted strings" API for tracking strings that get
used by multiple owners without duplicating the strings.
Added "ternary search tree" API for text->object mappings.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}
Other platforms/configurations tested?
FreeBSD 4.7 (sleipnir) serial & parallel
Solaris 2.6 (baldric) serial
2003-01-10 01:20:03 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't modify default property list");
|
2002-10-01 00:31:55 +08:00
|
|
|
|
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
/* Set values */
|
|
|
|
|
if((ret_value=H5P_get_multi_type(plist, type)) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't get data type for multi driver");
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2005-08-14 04:53:35 +08:00
|
|
|
|
}
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5P_get_multi_type
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Purpose: Get data type for multi file driver. Private function for
|
|
|
|
|
* H5Pget_multi_type.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Return: Success: Non-negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Failure: Negative value.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* Sep 17, 2002
|
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
* Modifications:
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-10-01 00:31:55 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2003-05-16 03:22:33 +08:00
|
|
|
|
static herr_t
|
|
|
|
|
H5P_get_multi_type(H5P_genplist_t *plist, H5FD_mem_t *type)
|
2002-10-01 00:31:55 +08:00
|
|
|
|
{
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED;
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_NOAPI(FAIL)
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
if( TRUE == H5P_isa_class(plist->plist_id, H5P_FILE_ACCESS) ) {
|
2005-08-14 04:53:35 +08:00
|
|
|
|
if(H5P_get(plist, H5F_ACS_MULTI_TYPE_NAME, type) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL,"can't get type for multi driver");
|
|
|
|
|
} else {
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
|
|
|
|
|
}
|
|
|
|
|
|
2002-10-01 00:31:55 +08:00
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_NOAPI(ret_value)
|
2005-08-14 04:53:35 +08:00
|
|
|
|
}
|
2002-10-01 00:31:55 +08:00
|
|
|
|
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_cache
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Set the number of objects in the meta data cache and the
|
|
|
|
|
* maximum number of chunks and bytes in the raw data chunk
|
|
|
|
|
* cache.
|
|
|
|
|
*
|
|
|
|
|
* The RDCC_W0 value should be between 0 and 1 inclusive and
|
|
|
|
|
* indicates how much chunks that have been fully read or fully
|
|
|
|
|
* written are favored for preemption. A value of zero means
|
|
|
|
|
* fully read or written chunks are treated no differently than
|
|
|
|
|
* other chunks (the preemption is strictly LRU) while a value
|
|
|
|
|
* of one means fully read chunks are always preempted before
|
|
|
|
|
* other chunks.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Tuesday, May 19, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Raymond Lu
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* Tuesday, Oct 23, 2001
|
|
|
|
|
* Changed the file access list to the new generic property list.
|
2005-04-29 00:40:07 +08:00
|
|
|
|
*
|
|
|
|
|
* J. Mainzer
|
|
|
|
|
* Thurs. 3/17/05
|
|
|
|
|
* The mdc_nelmts entry is no more in the FAPL, so I modified
|
|
|
|
|
* the code to ignore it.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
2005-04-29 00:40:07 +08:00
|
|
|
|
H5Pset_cache(hid_t plist_id, int UNUSED mdc_nelmts,
|
2008-11-13 02:07:51 +08:00
|
|
|
|
size_t rdcc_nslots, size_t rdcc_nbytes, double rdcc_w0)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2008-11-13 02:07:51 +08:00
|
|
|
|
H5TRACE5("e", "iIszzd", plist_id, mdc_nelmts, rdcc_nslots, rdcc_nbytes,
|
2006-12-19 03:16:17 +08:00
|
|
|
|
rdcc_w0);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Check arguments */
|
|
|
|
|
if (rdcc_w0<0.0 || rdcc_w0>1.0)
|
|
|
|
|
HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "raw data cache w0 value must be between 0.0 and 1.0 inclusive");
|
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Set sizes */
|
2008-11-13 02:07:51 +08:00
|
|
|
|
if(H5P_set(plist, H5F_ACS_DATA_CACHE_NUM_SLOTS_NAME, &rdcc_nslots) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set data cache number of slots");
|
2002-08-13 02:13:27 +08:00
|
|
|
|
if(H5P_set(plist, H5F_ACS_DATA_CACHE_BYTE_SIZE_NAME, &rdcc_nbytes) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set data cache byte size");
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_PREEMPT_READ_CHUNKS_NAME, &rdcc_w0) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET,FAIL, "can't set preempt read chunks");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_cache
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Retrieves the maximum possible number of elements in the meta
|
|
|
|
|
* data cache and the maximum possible number of elements and
|
|
|
|
|
* bytes and the RDCC_W0 value in the raw data chunk cache. Any
|
|
|
|
|
* (or all) arguments may be null pointers in which case the
|
|
|
|
|
* corresponding datum is not returned.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Robb Matzke
|
|
|
|
|
* Tuesday, May 19, 1998
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
* Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list to the new generic property
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* list.
|
2005-04-29 00:40:07 +08:00
|
|
|
|
*
|
|
|
|
|
* J Mainzer
|
|
|
|
|
* Thurs, 3/17/05
|
|
|
|
|
* The mdc_nelmts fapl entry is no more, so we now just
|
|
|
|
|
* return a constant when that value is requested.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_cache(hid_t plist_id, int *mdc_nelmts,
|
2008-11-13 02:07:51 +08:00
|
|
|
|
size_t *rdcc_nslots, size_t *rdcc_nbytes, double *rdcc_w0)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2008-11-13 02:07:51 +08:00
|
|
|
|
H5TRACE5("e", "i*Is*z*z*d", plist_id, mdc_nelmts, rdcc_nslots, rdcc_nbytes,
|
2002-08-13 02:13:27 +08:00
|
|
|
|
rdcc_w0);
|
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Get sizes */
|
2005-04-29 00:40:07 +08:00
|
|
|
|
|
|
|
|
|
/* the mdc_nelmts FAPL entry no longer exists, so just return a constant */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
if (mdc_nelmts)
|
2005-04-29 00:40:07 +08:00
|
|
|
|
*mdc_nelmts = 0;
|
|
|
|
|
|
2008-11-13 02:07:51 +08:00
|
|
|
|
if (rdcc_nslots)
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_DATA_CACHE_NUM_SLOTS_NAME, rdcc_nslots) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get data cache number of slots");
|
2002-08-13 02:13:27 +08:00
|
|
|
|
if (rdcc_nbytes)
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_DATA_CACHE_BYTE_SIZE_NAME, rdcc_nbytes) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get data cache byte size");
|
|
|
|
|
if (rdcc_w0)
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_PREEMPT_READ_CHUNKS_NAME, rdcc_w0) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get preempt read chunks");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
2005-04-29 00:40:07 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_mdc_config
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Purpose: Set the initial metadata cache resize configuration in the
|
2005-04-29 00:40:07 +08:00
|
|
|
|
* target FAPL.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: J. Mainzer
|
|
|
|
|
* Thursday, April 7, 2005
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
H5Pset_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr)
|
2005-04-29 00:40:07 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2007-03-09 00:57:36 +08:00
|
|
|
|
H5TRACE2("e", "i*x", plist_id, config_ptr);
|
2005-04-29 00:40:07 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
2005-04-29 00:40:07 +08:00
|
|
|
|
|
|
|
|
|
/* validate the new configuration */
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
if(H5AC_validate_config(config_ptr) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid metadata cache configuration")
|
2005-04-29 00:40:07 +08:00
|
|
|
|
|
|
|
|
|
/* set the modified config */
|
|
|
|
|
|
2005-08-14 04:53:35 +08:00
|
|
|
|
/* If we ever support multiple versions of H5AC_cache_config_t, we
|
2005-04-29 00:40:07 +08:00
|
|
|
|
* will have to test the version and do translation here.
|
|
|
|
|
*/
|
|
|
|
|
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
if(H5P_set(plist, H5F_ACS_META_CACHE_INIT_CONFIG_NAME, config_ptr) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set metadata cache initial config")
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2005-04-29 00:40:07 +08:00
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2005-04-29 00:40:07 +08:00
|
|
|
|
} /* H5Pset_mdc_config() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_mdc_config
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Retrieve the metadata cache initial resize configuration
|
|
|
|
|
* from the target FAPL.
|
|
|
|
|
*
|
|
|
|
|
* Observe that the function will fail if config_ptr is
|
|
|
|
|
* NULL, or if config_ptr->version specifies an unknown
|
|
|
|
|
* version of H5AC_cache_config_t.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: J. Mainzer
|
|
|
|
|
* Thursday, April 7, 2005
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
H5Pget_mdc_config(hid_t plist_id, H5AC_cache_config_t *config_ptr)
|
2005-04-29 00:40:07 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2007-03-09 00:57:36 +08:00
|
|
|
|
H5TRACE2("e", "i*x", plist_id, config_ptr);
|
2005-04-29 00:40:07 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
2005-04-29 00:40:07 +08:00
|
|
|
|
|
|
|
|
|
/* validate the config_ptr */
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
if(config_ptr == NULL)
|
2005-04-29 00:40:07 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "NULL config_ptr on entry.")
|
|
|
|
|
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
if(config_ptr->version != H5AC__CURR_CACHE_CONFIG_VERSION)
|
2005-04-29 00:40:07 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Unknown config version.")
|
|
|
|
|
|
|
|
|
|
/* If we ever support multiple versions of H5AC_cache_config_t, we
|
|
|
|
|
* will have to get the cannonical version here, and then translate
|
|
|
|
|
* to the version of the structure supplied.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/* Get the current initial metadata cache resize configuration */
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
if(H5P_get(plist, H5F_ACS_META_CACHE_INIT_CONFIG_NAME, config_ptr) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET,FAIL, "can't get metadata cache initial resize config")
|
2005-04-29 00:40:07 +08:00
|
|
|
|
|
|
|
|
|
done:
|
[svn-r18030] Description:
Bring "brush clearing" changes (whitespace & style issues, mostly) from
metadata_journaling branch to the "merging" branch, to converge the trunk and
the metadata_journaling branch.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
Mac OS X/32 10.6.2 (amazon) in debug mode
Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe,
in production mode
2009-12-17 23:07:35 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2005-04-29 00:40:07 +08:00
|
|
|
|
} /* H5Pget_mdc_config() */
|
|
|
|
|
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_gc_references
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Sets the flag for garbage collecting references for the file.
|
|
|
|
|
* Dataset region references (and other reference types
|
|
|
|
|
* probably) use space in the file heap. If garbage collection
|
|
|
|
|
* is on and the user passes in an uninitialized value in a
|
|
|
|
|
* reference structure, the heap might get corrupted. When
|
|
|
|
|
* garbage collection is off however and the user re-uses a
|
|
|
|
|
* reference, the previous heap block will be orphaned and not
|
|
|
|
|
* returned to the free heap space. When garbage collection is
|
|
|
|
|
* on, the user must initialize the reference structures to 0 or
|
|
|
|
|
* risk heap corruption.
|
|
|
|
|
*
|
|
|
|
|
* Default value for garbage collecting references is off, just
|
|
|
|
|
* to be on the safe side.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* June, 1999
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Raymond Lu
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list to the new generic property
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* list.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_gc_references(hid_t plist_id, unsigned gc_ref)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "iIu", plist_id, gc_ref);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Set values */
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_GARBG_COLCT_REF_NAME, &gc_ref) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set garbage collect reference");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_gc_references
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Returns the current setting for the garbage collection
|
|
|
|
|
* references property from a file access property list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* June, 1999
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
* Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list to the new generic property
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* list.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_gc_references(hid_t plist_id, unsigned *gc_ref/*out*/)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "ix", plist_id, gc_ref);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Get values */
|
|
|
|
|
if (gc_ref)
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_GARBG_COLCT_REF_NAME, gc_ref) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get garbage collect reference");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_fclose_degree
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Sets the degree for the file close behavior.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* November, 2001
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_fclose_degree(hid_t plist_id, H5F_close_degree_t degree)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2006-11-02 12:54:19 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "iFd", plist_id, degree);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
2006-11-02 12:54:19 +08:00
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Set values */
|
2006-11-02 12:54:19 +08:00
|
|
|
|
if(H5P_set(plist, H5F_ACS_CLOSE_DEGREE_NAME, °ree) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set file close degree")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
done:
|
2006-11-02 12:54:19 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
|
|
|
|
} /* end H5Pset_fclose_degree() */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_fclose_degree
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Purpose: Returns the degree for the file close behavior.
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Programmer: Raymond Lu
|
|
|
|
|
* November, 2001
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
2006-11-02 12:54:19 +08:00
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_fclose_degree(hid_t plist_id, H5F_close_degree_t *degree)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2006-11-02 12:54:19 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "i*Fd", plist_id, degree);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
2006-11-02 12:54:19 +08:00
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id, H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2006-11-02 12:54:19 +08:00
|
|
|
|
if(degree && H5P_get(plist, H5F_ACS_CLOSE_DEGREE_NAME, degree) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get file close degree")
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
done:
|
2006-11-02 12:54:19 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
|
|
|
|
} /* end H5Pget_fclose_degree() */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_meta_block_size
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Sets the minimum size of metadata block allocations when
|
|
|
|
|
* the H5FD_FEAT_AGGREGATE_METADATA is set by a VFL driver.
|
|
|
|
|
* Each "raw" metadata block is allocated to be this size and then
|
|
|
|
|
* specific pieces of metadata (object headers, local heaps, B-trees, etc)
|
|
|
|
|
* are sub-allocated from this block.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* The default value is set to 2048 (bytes), indicating that metadata
|
|
|
|
|
* will be attempted to be bunched together in (at least) 2K blocks in
|
|
|
|
|
* the file. Setting the value to 0 with this API function will
|
|
|
|
|
* turn off the metadata aggregation, even if the VFL driver attempts to
|
|
|
|
|
* use that strategy.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Friday, August 25, 2000
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
* Raymond Lu
|
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list to the new generic property
|
|
|
|
|
* list.
|
2002-08-13 02:13:27 +08:00
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_meta_block_size(hid_t plist_id, hsize_t size)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "ih", plist_id, size);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Set values */
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_META_BLOCK_SIZE_NAME, &size) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set meta data block size");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_meta_block_size
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Returns the current settings for the metadata block allocation
|
|
|
|
|
* property from a file access property list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Friday, August 29, 2000
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Raymond Lu
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list to the new generic property
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* list.
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_meta_block_size(hid_t plist_id, hsize_t *size/*out*/)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "ix", plist_id, size);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Get values */
|
|
|
|
|
if (size) {
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_META_BLOCK_SIZE_NAME, size) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get meta data block size");
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_sieve_buf_size
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Sets the maximum size of the data seive buffer used for file
|
|
|
|
|
* drivers which are capable of using data sieving. The data sieve
|
|
|
|
|
* buffer is used when performing I/O on datasets in the file. Using a
|
|
|
|
|
* buffer which is large anough to hold several pieces of the dataset
|
|
|
|
|
* being read in for hyperslab selections boosts performance by quite a
|
|
|
|
|
* bit.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* The default value is set to 64KB, indicating that file I/O for raw data
|
|
|
|
|
* reads and writes will occur in at least 64KB blocks.
|
|
|
|
|
* Setting the value to 0 with this API function will turn off the
|
|
|
|
|
* data sieving, even if the VFL driver attempts to use that strategy.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Thursday, September 21, 2000
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Raymond Lu
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list to the new generic property
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* list.
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_sieve_buf_size(hid_t plist_id, size_t size)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2005-08-14 04:53:35 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "iz", plist_id, size);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Set values */
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_SIEVE_BUF_SIZE_NAME, &size) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set sieve buffer size");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
} /* end H5Pset_sieve_buf_size() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_sieve_buf_size
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Returns the current settings for the data sieve buffer size
|
|
|
|
|
* property from a file access property list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Thursday, September 21, 2000
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Raymond Lu
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* Tuesday, Oct 23, 2001
|
2005-08-14 04:53:35 +08:00
|
|
|
|
* Changed the file access list to the new generic property
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* list.
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_sieve_buf_size(hid_t plist_id, size_t *size/*out*/)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "ix", plist_id, size);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Get values */
|
|
|
|
|
if (size)
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_SIEVE_BUF_SIZE_NAME, size) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get sieve buffer size");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
} /* end H5Pget_sieve_buf_size() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_small_data_block_size
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Sets the minimum size of "small" raw data block allocations
|
|
|
|
|
* when the H5FD_FEAT_AGGREGATE_SMALLDATA is set by a VFL driver.
|
|
|
|
|
* Each "small" raw data block is allocated to be this size and then
|
|
|
|
|
* pieces of raw data which are small enough to fit are sub-allocated from
|
|
|
|
|
* this block.
|
2005-08-14 04:53:35 +08:00
|
|
|
|
*
|
2002-08-13 02:13:27 +08:00
|
|
|
|
* The default value is set to 2048 (bytes), indicating that raw data
|
|
|
|
|
* smaller than this value will be attempted to be bunched together in (at
|
|
|
|
|
* least) 2K blocks in the file. Setting the value to 0 with this API
|
|
|
|
|
* function will turn off the "small" raw data aggregation, even if the
|
|
|
|
|
* VFL driver attempts to use that strategy.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Wednesday, June 5, 2002
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_small_data_block_size(hid_t plist_id, hsize_t size)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "ih", plist_id, size);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Set values */
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_SDATA_BLOCK_SIZE_NAME, &size) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set 'small data' block size");
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
} /* end H5Pset_small_data_block_size() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_small_data_block_size
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Returns the current settings for the "small" raw data block
|
|
|
|
|
* allocation property from a file access property list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
|
|
|
|
* Wednesday, June 5, 2002
|
|
|
|
|
*
|
|
|
|
|
* Modifications:
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_small_data_block_size(hid_t plist_id, hsize_t *size/*out*/)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
2012-02-09 11:13:27 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2006-12-19 03:16:17 +08:00
|
|
|
|
H5TRACE2("e", "ix", plist_id, size);
|
2002-08-13 02:13:27 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id,H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
|
|
|
|
|
|
|
|
|
|
/* Get values */
|
|
|
|
|
if (size) {
|
2006-09-12 01:30:24 +08:00
|
|
|
|
if(H5P_get(plist, H5F_ACS_SDATA_BLOCK_SIZE_NAME, size) < 0)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get 'small data' block size");
|
|
|
|
|
} /* end if */
|
|
|
|
|
|
|
|
|
|
done:
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
2002-08-13 02:13:27 +08:00
|
|
|
|
} /* end H5Pget_small_data_block_size() */
|
|
|
|
|
|
2006-09-12 01:30:24 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
* Function: H5Pset_libver_bounds
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
*
|
|
|
|
|
* Purpose: Indicates which versions of the file format the library should
|
|
|
|
|
* use when creating objects. LOW is the earliest version of the HDF5
|
|
|
|
|
* library that is guaranteed to be able to access the objects created
|
|
|
|
|
* (the format of some objects in an HDF5 file may not have changed between
|
|
|
|
|
* versions of the HDF5 library, possibly allowing earlier versions of the
|
|
|
|
|
* HDF5 library to access those objects) and HIGH is the latest version
|
|
|
|
|
* of the library required to access the objects created (later versions
|
|
|
|
|
* of the HDF5 library will also be able to access those objects).
|
|
|
|
|
*
|
|
|
|
|
* LOW is used to require that objects use a more modern format and HIGH
|
|
|
|
|
* is used to restrict objects from using a more modern format.
|
|
|
|
|
*
|
|
|
|
|
* The special values of H5F_FORMAT_EARLIEST and H5F_FORMAT_LATEST can be
|
|
|
|
|
* used in the following manner: Setting LOW and HIGH to H5F_FORMAT_LATEST
|
|
|
|
|
* will produce files whose objects use the latest version of the file
|
|
|
|
|
* format available in the current HDF5 library for each object created.
|
|
|
|
|
* Setting LOW and HIGH to H5F_FORMAT_EARLIEST will produce files that that
|
|
|
|
|
* always require the use of the earliest version of the file format for
|
|
|
|
|
* each object created. [NOTE! LOW=HIGH=H5F_FORMAT_EARLIEST is not
|
|
|
|
|
* implemented as of version 1.8.0 and setting LOW and HIGH to
|
|
|
|
|
* H5F_FORMAT_EARLIEST will produce an error currently].
|
|
|
|
|
*
|
|
|
|
|
* Currently, the only two valid combinations for this routine are:
|
|
|
|
|
* LOW = H5F_FORMAT_EARLIEST and HIGH = H5F_FORMAT_LATEST (the default
|
|
|
|
|
* setting, which creates objects with the ealiest version possible for
|
|
|
|
|
* each object, but no upper limit on the version allowed to be created if
|
|
|
|
|
* a newer version of an object's format is required to support a feature
|
|
|
|
|
* requested with an HDF5 library API routine), and LOW = H5F_FORMAT_LATEST
|
|
|
|
|
* and HIGH = H5F_FORMAT_LATEST (which is described above).
|
|
|
|
|
*
|
|
|
|
|
* The LOW and HIGH values set with this routine at imposed with each
|
|
|
|
|
* HDF5 library API call that creates objects in the file. API calls that
|
|
|
|
|
* would violate the LOW or HIGH format bound will fail.
|
|
|
|
|
*
|
|
|
|
|
* Setting the LOW and HIGH values will not affect reading/writing existing
|
|
|
|
|
* objects, only the creation of new objects.
|
|
|
|
|
*
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
* Note: Eventually we want to add more values to the H5F_libver_t
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
* enumerated type that indicate library release values where the file
|
|
|
|
|
* format was changed (like "H5F_FORMAT_1_2_0" for the file format changes
|
|
|
|
|
* in the 1.2.x release branch and possily even "H5F_FORMAT_1_4_2" for
|
|
|
|
|
* a change mid-way through the 1.4.x release branch, etc).
|
|
|
|
|
*
|
|
|
|
|
* Adding more values will allow applications to make settings like the
|
|
|
|
|
* following:
|
|
|
|
|
* LOW = H5F_FORMAT_EARLIEST, HIGH = H5F_FORMAT_1_2_0 => Create objects
|
|
|
|
|
* with the earliest possible format and don't allow any objects
|
|
|
|
|
* to be created that require a library version greater than 1.2.x
|
|
|
|
|
* (This is the "make certain that <application> linked with v1.2.x
|
|
|
|
|
* of the library can read the file produced" use case)
|
|
|
|
|
*
|
|
|
|
|
* LOW = H5F_FORMAT_1_4_2, HIGH = H5F_FORMAT_LATEST => create objects
|
|
|
|
|
* with at least the version of their format that the 1.4.2 library
|
|
|
|
|
* uses and allow any later version of the object's format
|
|
|
|
|
* necessary to represent features used.
|
|
|
|
|
* (This is the "make certain to take advantage of <new feature>
|
|
|
|
|
* in the file format" use case (maybe <new feature> is smaller
|
|
|
|
|
* or scales better than an ealier version, which would otherwise
|
|
|
|
|
* be used))
|
|
|
|
|
*
|
|
|
|
|
* LOW = H5F_FORMAT_1_2_0, HIGH = H5F_FORMAT_1_6_0 => creates objects
|
|
|
|
|
* with at least the version of their format that the 1.2.x library
|
|
|
|
|
* uses and don't allow any objects to be created that require a
|
|
|
|
|
* library version greater than 1.6.x.
|
|
|
|
|
* (Not certain of a particular use case for these settings,
|
|
|
|
|
* although its probably just the logical combination of the
|
|
|
|
|
* previous two; it just falls out as possible/logical (if it turns
|
|
|
|
|
* out to be hard to implement in some way, we can always disallow
|
|
|
|
|
* it))
|
|
|
|
|
*
|
|
|
|
|
* Note #2: We talked about whether to include enum values for only library
|
|
|
|
|
* versions where the format changed and decided it would be less confusing
|
|
|
|
|
* for application developers if we include enum values for _all_ library
|
|
|
|
|
* releases and then map down to the previous actual library release which
|
|
|
|
|
* had a format change.
|
2006-09-12 01:30:24 +08:00
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
* Sunday, December 30, 2007
|
2006-09-12 01:30:24 +08:00
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
H5Pset_libver_bounds(hid_t plist_id, H5F_libver_t low,
|
|
|
|
|
H5F_libver_t high)
|
2006-09-12 01:30:24 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
hbool_t latest; /* Whether to use the latest version or not */
|
2006-09-12 01:30:24 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2008-01-05 01:43:56 +08:00
|
|
|
|
H5TRACE3("e", "iFvFv", plist_id, low, high);
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
|
|
|
|
|
/* Check args */
|
|
|
|
|
/* (Note that this is _really_ restricted right now, we'll want to loosen
|
|
|
|
|
* this up more as we add features - QAK)
|
|
|
|
|
*/
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
if(high != H5F_LIBVER_LATEST)
|
|
|
|
|
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid high library version bound")
|
2006-09-12 01:30:24 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id, H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
|
|
|
|
|
|
|
|
|
/* Set values */
|
2009-01-09 01:27:15 +08:00
|
|
|
|
latest = (hbool_t)((low == H5F_LIBVER_LATEST) ? TRUE : FALSE);
|
2006-09-12 01:30:24 +08:00
|
|
|
|
if(H5P_set(plist, H5F_ACS_LATEST_FORMAT_NAME, &latest) < 0)
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set library version bounds")
|
2006-09-12 01:30:24 +08:00
|
|
|
|
|
|
|
|
|
done:
|
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
} /* end H5Pset_libver_bounds() */
|
2006-09-12 01:30:24 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
* Function: H5Pget_libver_bounds
|
2006-09-12 01:30:24 +08:00
|
|
|
|
*
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
* Purpose: Returns the current settings for the library version format bounds
|
2006-09-12 01:30:24 +08:00
|
|
|
|
* from a file access property list.
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Quincey Koziol
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
* Thursday, January 3, 2008
|
2006-09-12 01:30:24 +08:00
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
H5Pget_libver_bounds(hid_t plist_id, H5F_libver_t *low/*out*/,
|
|
|
|
|
H5F_libver_t *high/*out*/)
|
2006-09-12 01:30:24 +08:00
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
hbool_t latest; /* Whether to use the latest version or not */
|
2006-09-12 01:30:24 +08:00
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2008-01-05 01:43:56 +08:00
|
|
|
|
H5TRACE3("e", "ixx", plist_id, low, high);
|
2006-09-12 01:30:24 +08:00
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id, H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
|
|
|
|
|
|
|
|
|
/* Get value */
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
if(H5P_get(plist, H5F_ACS_LATEST_FORMAT_NAME, &latest) < 0)
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get library version bounds")
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
|
|
|
|
|
/* Check for setting values to return */
|
|
|
|
|
/* (Again, this is restricted now, we'll need to open it up later -QAK) */
|
|
|
|
|
if(low)
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
*low = latest ? H5F_LIBVER_LATEST : H5F_LIBVER_EARLIEST;
|
[svn-r14362] Description:
Switched from "H5P[gs]et_latest_format" to "H5P[gs]et_format_bounds".
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-03 21:55:39 +08:00
|
|
|
|
if(high)
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
*high = H5F_LIBVER_LATEST;
|
2006-09-12 01:30:24 +08:00
|
|
|
|
|
|
|
|
|
done:
|
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
[svn-r14413] Description:
Change H5P[gs]et_format_bounds() => H5P[gs]et_libver_bounds() and also
enumerated values H5F_FORMAT_{EARLIEST, LATEST} => H5F_LIBVER_{EARLIEST, LATEST}
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
2008-01-15 07:49:12 +08:00
|
|
|
|
} /* end H5Pget_libver_bounds() */
|
2006-09-12 01:30:24 +08:00
|
|
|
|
|
2011-02-09 01:32:56 +08:00
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pset_elink_file_cache_size
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Sets the number of files opened through external links
|
|
|
|
|
* from the file associated with this fapl to be held open
|
|
|
|
|
* in that file's external file cache. When the maximum
|
|
|
|
|
* number of files is reached, the least recently used file
|
|
|
|
|
* is closed (unless it is opened from somewhere else).
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Neil Fortner
|
|
|
|
|
* Friday, December 17, 2010
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pset_elink_file_cache_size(hid_t plist_id, unsigned efc_size)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2011-02-09 01:32:56 +08:00
|
|
|
|
H5TRACE2("e", "iIu", plist_id, efc_size);
|
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id, H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
|
|
|
|
|
|
|
|
|
/* Set value */
|
|
|
|
|
if(H5P_set(plist, H5F_ACS_EFC_SIZE_NAME, &efc_size) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set elink file cache size")
|
|
|
|
|
|
|
|
|
|
done:
|
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
|
|
|
|
} /* end H5Pset_elink_file_cache_size() */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Function: H5Pget_elink_file_cache_size
|
|
|
|
|
*
|
|
|
|
|
* Purpose: Gets the number of files opened through external links
|
|
|
|
|
* from the file associated with this fapl to be held open
|
|
|
|
|
* in that file's external file cache. When the maximum
|
|
|
|
|
* number of files is reached, the least recently used file
|
|
|
|
|
* is closed (unless it is opened from somewhere else).
|
|
|
|
|
*
|
|
|
|
|
* Return: Non-negative on success/Negative on failure
|
|
|
|
|
*
|
|
|
|
|
* Programmer: Neil Fortner
|
|
|
|
|
* Friday, December 17, 2010
|
|
|
|
|
*
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
herr_t
|
|
|
|
|
H5Pget_elink_file_cache_size(hid_t plist_id, unsigned *efc_size)
|
|
|
|
|
{
|
|
|
|
|
H5P_genplist_t *plist; /* Property list pointer */
|
|
|
|
|
herr_t ret_value = SUCCEED; /* return value */
|
|
|
|
|
|
2012-02-09 11:13:27 +08:00
|
|
|
|
FUNC_ENTER_API(FAIL)
|
2011-02-09 01:32:56 +08:00
|
|
|
|
H5TRACE2("e", "i*Iu", plist_id, efc_size);
|
|
|
|
|
|
|
|
|
|
/* Get the plist structure */
|
|
|
|
|
if(NULL == (plist = H5P_object_verify(plist_id, H5P_FILE_ACCESS)))
|
|
|
|
|
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
|
|
|
|
|
|
|
|
|
/* Get value */
|
|
|
|
|
if(efc_size)
|
|
|
|
|
if(H5P_get(plist, H5F_ACS_EFC_SIZE_NAME, efc_size) < 0)
|
|
|
|
|
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get elink file cache size")
|
|
|
|
|
|
|
|
|
|
done:
|
|
|
|
|
FUNC_LEAVE_API(ret_value)
|
|
|
|
|
} /* end H5Pget_elink_file_cache_size() */
|
|
|
|
|
|