mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-21 01:04:10 +08:00
Merge remote-tracking branch 'origin/develop' into namespace_cleanup_01
This commit is contained in:
commit
a2340cec3b
@ -17,7 +17,7 @@ use Text::Tabs;
|
||||
# If you do not have access to either file, you may request a copy from
|
||||
# help@hdfgroup.org.
|
||||
#
|
||||
# Robb Matzke, matzke@llnl.gov
|
||||
# Robb Matzke
|
||||
# 30 Aug 1997
|
||||
#
|
||||
# Purpose: This script will read standard input which should be a
|
||||
|
@ -17,7 +17,7 @@ use strict;
|
||||
# If you do not have access to either file, you may request a copy from
|
||||
# help@hdfgroup.org.
|
||||
#
|
||||
# Robb Matzke <matzke@llnl.gov>
|
||||
# Robb Matzke
|
||||
# 17 July 1998
|
||||
|
||||
### Purpose
|
||||
|
@ -15,7 +15,7 @@ use warnings;
|
||||
# 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.
|
||||
#
|
||||
# Quincey Koziol, koziol@hdfgroup.org
|
||||
# Quincey Koziol
|
||||
# 9 Aug 2013
|
||||
#
|
||||
# Purpose: Given an input file containing the output from a build of the
|
||||
|
@ -684,6 +684,53 @@ unsigned FileAccPropList::getGcReferences() const
|
||||
return(gc_ref);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Function: FileAccPropList::setFileLocking
|
||||
///\brief Sets file locking flags.
|
||||
///\param use_file_locking - IN: Flag that determines if file locks should
|
||||
// be used or not.
|
||||
///\param ignore_when_disabled - IN: Flag that determines if file locks
|
||||
// should be be used when disabled on the file system or not.
|
||||
///\exception H5::PropListIException
|
||||
///\par Description
|
||||
/// For information, please refer to the H5Pset_file_locking API in
|
||||
/// the HDF5 C Reference Manual.
|
||||
// Programmer Dana Robinson - 2020
|
||||
//--------------------------------------------------------------------------
|
||||
void FileAccPropList::setFileLocking(hbool_t use_file_locking, hbool_t ignore_when_disabled) const
|
||||
{
|
||||
herr_t ret_value = H5Pset_file_locking(id, use_file_locking, ignore_when_disabled);
|
||||
|
||||
if (ret_value < 0)
|
||||
{
|
||||
throw PropListIException("FileAccPropList::setFileLocking", "H5Pset_file_locking failed");
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Function: FileAccPropList::getFileLocking
|
||||
///\brief Gets file locking flags.
|
||||
///\param use_file_locking - OUT: Flag that determines if file locks
|
||||
// should be used or not.
|
||||
///\param ignore_when_disabled - OUT: Flag that determines if file locks
|
||||
// should be be used when disabled on the file system or not.
|
||||
///\exception H5::PropListIException
|
||||
///\par Description
|
||||
/// For information, please refer to the H5Pget_file_locking API in
|
||||
/// the HDF5 C Reference Manual.
|
||||
// Programmer Dana Robinson - 2020
|
||||
//--------------------------------------------------------------------------
|
||||
void FileAccPropList::getFileLocking(hbool_t& use_file_locking, hbool_t& ignore_when_disabled) const
|
||||
{
|
||||
herr_t ret_value = H5Pget_file_locking(id, &use_file_locking, &ignore_when_disabled);
|
||||
|
||||
if (ret_value < 0)
|
||||
{
|
||||
throw PropListIException("FileAccPropList::getFileLocking", "H5Pget_file_locking failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Function: FileAccPropList::setLibverBounds
|
||||
///\brief Sets bounds on versions of library format to be used when creating
|
||||
|
@ -126,6 +126,12 @@ class H5_DLLCPP FileAccPropList : public PropList {
|
||||
// Returns garbage collecting references setting.
|
||||
unsigned getGcReferences() const;
|
||||
|
||||
// Sets file locking parameters.
|
||||
void setFileLocking(hbool_t use_file_locking, hbool_t ignore_when_disabled) const;
|
||||
|
||||
// Gets file locking parameters.
|
||||
void getFileLocking(hbool_t& use_file_locking, hbool_t& ignore_when_disabled) const;
|
||||
|
||||
// Sets bounds on versions of library format to be used when creating
|
||||
// or writing objects.
|
||||
void setLibverBounds(H5F_libver_t libver_low, H5F_libver_t libver_high) const;
|
||||
|
@ -61,6 +61,31 @@ if (HDF5_ENABLE_CODESTACK)
|
||||
endif ()
|
||||
MARK_AS_ADVANCED (HDF5_ENABLE_CODESTACK)
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Check if they would like to use file locking by default
|
||||
#-----------------------------------------------------------------------------
|
||||
option (HDF5_USE_FILE_LOCKING "Use file locking by default (mainly for SWMR)" ON)
|
||||
if (HDF5_USE_FILE_LOCKING)
|
||||
set (${HDF_PREFIX}_USE_FILE_LOCKING 1)
|
||||
endif ()
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Check if they would like to ignore file locks when disabled on a file system
|
||||
#-----------------------------------------------------------------------------
|
||||
option (HDF5_IGNORE_DISABLED_FILE_LOCKS "Ignore file locks when disabled on file system" ON)
|
||||
if (HDF5_IGNORE_DISABLED_FILE_LOCKS)
|
||||
set (${HDF_PREFIX}_IGNORE_DISABLED_FILE_LOCKS 1)
|
||||
endif ()
|
||||
|
||||
# Set the libhdf5.settings file variable
|
||||
if (HDF5_IGNORE_DISABLED_FILE_LOCKS AND HDF5_USE_FILE_LOCKING)
|
||||
set (HDF5_FILE_LOCKING_SETTING "best-effort")
|
||||
elseif (HDF5_IGNORE_DISABLED_FILE_LOCKS)
|
||||
set (HDF5_FILE_LOCKING_SETTING "yes")
|
||||
else ()
|
||||
set (HDF5_FILE_LOCKING_SETTING "no")
|
||||
endif ()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Are we going to use HSIZE_T
|
||||
#-----------------------------------------------------------------------------
|
||||
|
@ -489,6 +489,9 @@
|
||||
/* Define if the compiler understands __inline__ */
|
||||
#cmakedefine H5_HAVE___INLINE__ @H5_HAVE___INLINE__@
|
||||
|
||||
/* Define if the library will ignore file locks when disabled */
|
||||
#cmakedefine H5_IGNORE_DISABLED_FILE_LOCKS @H5_IGNORE_DISABLED_FILE_LOCKS@
|
||||
|
||||
/* Define if the high-level library headers should be included in hdf5.h */
|
||||
#cmakedefine H5_INCLUDE_HL @H5_INCLUDE_HL@
|
||||
|
||||
@ -729,6 +732,9 @@
|
||||
/* Define using v1.14 public API symbols by default */
|
||||
#cmakedefine H5_USE_114_API_DEFAULT @H5_USE_114_API_DEFAULT@
|
||||
|
||||
/* Define if the library will use file locking */
|
||||
#cmakedefine H5_FILE_LOCKING @H5_USE_FILE_LOCKING@
|
||||
|
||||
/* Define if a memory checking tool will be used on the library, to cause
|
||||
library to be very picky about memory operations and also disable the
|
||||
internal free list manager code. */
|
||||
|
@ -85,5 +85,6 @@ Parallel Filtered Dataset Writes: @PARALLEL_FILTERED_WRITES@
|
||||
Using memory checker: @HDF5_ENABLE_USING_MEMCHECKER@
|
||||
Memory allocation sanity checks: @HDF5_MEMORY_ALLOC_SANITY_CHECK@
|
||||
Function Stack Tracing: @HDF5_ENABLE_CODESTACK@
|
||||
Use file locking: @HDF5_FILE_LOCKING_SETTING@
|
||||
Strict File Format Checks: @HDF5_STRICT_FORMAT_CHECKS@
|
||||
Optimization Instrumentation: @HDF5_Enable_Instrument@
|
||||
|
50
configure.ac
50
configure.ac
@ -2315,6 +2315,56 @@ case "X-$OPTIMIZATION" in
|
||||
;;
|
||||
esac
|
||||
|
||||
## ----------------------------------------------------------------------
|
||||
## Check if file locking should be used
|
||||
##
|
||||
AC_MSG_CHECKING([enable file locking])
|
||||
AC_ARG_ENABLE([file-locking],
|
||||
[AS_HELP_STRING([--enable-file-locking=(yes|no|best-effort)],
|
||||
[Sets the default for whether or not to use file
|
||||
locking when opening files. Can be overridden
|
||||
with the HDF5_USE_FILE_LOCKING environment variable
|
||||
and the H5Pset_file_locking() API call.
|
||||
best-effort attempts to use file locking but does
|
||||
not fail when file locks have been disabled on
|
||||
the file system (useful with Lustre).
|
||||
[default=best-effort]
|
||||
])],
|
||||
[DESIRED_FILE_LOCKING=$enableval])
|
||||
|
||||
## Set defaults
|
||||
if test "X-$DESIRED_FILE_LOCKING" = X- ; then
|
||||
DESIRED_FILE_LOCKING=best-effort
|
||||
fi
|
||||
|
||||
## Allow this variable to be substituted in
|
||||
## other files (src/libhdf5.settings.in, etc.)
|
||||
AC_SUBST([DESIRED_FILE_LOCKING])
|
||||
AC_SUBST([USE_FILE_LOCKING])
|
||||
AC_SUBST([IGNORE_DISABLED_FILE_LOCKS])
|
||||
|
||||
case "X-$DESIRED_FILE_LOCKING" in
|
||||
X-best-effort)
|
||||
AC_MSG_RESULT([best-effort])
|
||||
AC_DEFINE([USE_FILE_LOCKING], [1],
|
||||
[Define if the library will use file locking])
|
||||
AC_DEFINE([IGNORE_DISABLED_FILE_LOCKS], [1],
|
||||
[Define if the library will ignore file locks when disabled])
|
||||
;;
|
||||
X-yes)
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([USE_FILE_LOCKING], [1],
|
||||
[Define if the library will use file locking])
|
||||
;;
|
||||
X-no)
|
||||
AC_MSG_RESULT([no])
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Unrecognized value: $USE_FILE_LOCKING])
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
## ----------------------------------------------------------------------
|
||||
## Enable/disable internal package-level debugging output
|
||||
##
|
||||
|
@ -8263,5 +8263,107 @@ END SUBROUTINE h5pget_virtual_dsetname_f
|
||||
|
||||
END SUBROUTINE h5pget_vol_id_f
|
||||
|
||||
!****s* H5P (F03)/h5pget_file_locking_f_F03
|
||||
!
|
||||
! NAME
|
||||
! h5pget_file_locking_f
|
||||
!
|
||||
! PURPOSE
|
||||
! Gets the file locking properties. File locking is mainly used to help
|
||||
! enforce SWMR semantics.
|
||||
!
|
||||
! INPUTS
|
||||
! fapl_id - Target file access property list identifier.
|
||||
!
|
||||
! OUTPUTS
|
||||
! use_file_locking - Whether or not to use file locks.
|
||||
! ignore_disabled_locks - Whether or not to ignore file locks when locking
|
||||
! is disabled on a file system.
|
||||
! hdferr - error code:
|
||||
! 0 on success and -1 on failure
|
||||
!
|
||||
! AUTHOR
|
||||
! Dana Robinson
|
||||
! Summer 2020
|
||||
!
|
||||
! Fortran2003 Interface:
|
||||
SUBROUTINE h5pget_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, hdferr)
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T) , INTENT(IN) :: fapl_id
|
||||
LOGICAL , INTENT(OUT) :: use_file_locking
|
||||
LOGICAL , INTENT(OUT) :: ignore_disabled_locks
|
||||
INTEGER , INTENT(OUT) :: hdferr
|
||||
!*****
|
||||
LOGICAL(C_BOOL) :: c_use_flag
|
||||
LOGICAL(C_BOOL) :: c_ignore_flag
|
||||
|
||||
INTERFACE
|
||||
INTEGER FUNCTION h5pget_file_locking(fapl_id, use_file_locking, ignore_disabled_locks) BIND(C, NAME='H5Pget_file_locking')
|
||||
IMPORT :: HID_T, C_BOOL
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T), INTENT(IN), VALUE :: fapl_id
|
||||
LOGICAL(C_BOOL), INTENT(OUT) :: use_file_locking
|
||||
LOGICAL(C_BOOL), INTENT(OUT) :: ignore_disabled_locks
|
||||
END FUNCTION h5pget_file_locking
|
||||
END INTERFACE
|
||||
|
||||
hdferr = INT(h5pget_file_locking(fapl_id, c_use_flag, c_ignore_flag))
|
||||
|
||||
! Transfer value of C C_BOOL type to Fortran LOGICAL
|
||||
use_file_locking = c_use_flag
|
||||
ignore_disabled_locks = c_ignore_flag
|
||||
|
||||
END SUBROUTINE h5pget_file_locking_f
|
||||
|
||||
!****s* H5P (F03)/h5pset_file_locking_f_F03
|
||||
!
|
||||
! NAME
|
||||
! h5pset_file_locking_f
|
||||
!
|
||||
! PURPOSE
|
||||
! Sets the file locking properties. File locking is mainly used to help
|
||||
! enforce SWMR semantics.
|
||||
!
|
||||
! INPUTS
|
||||
! fapl_id - Target file access property list identifier.
|
||||
! use_file_locking - Whether or not to use file locks.
|
||||
! ignore_disabled_locks - Whether or not to ignore file locks when locking
|
||||
! is disabled on a file system.
|
||||
! hdferr - error code:
|
||||
! 0 on success and -1 on failure
|
||||
!
|
||||
! AUTHOR
|
||||
! Dana Robinson
|
||||
! Summer 2020
|
||||
!
|
||||
! Fortran2003 Interface:
|
||||
SUBROUTINE h5pset_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, hdferr)
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T) , INTENT(IN) :: fapl_id
|
||||
LOGICAL , INTENT(IN) :: use_file_locking
|
||||
LOGICAL , INTENT(IN) :: ignore_disabled_locks
|
||||
INTEGER , INTENT(OUT) :: hdferr
|
||||
!*****
|
||||
LOGICAL(C_BOOL) :: c_use_flag
|
||||
LOGICAL(C_BOOL) :: c_ignore_flag
|
||||
|
||||
INTERFACE
|
||||
INTEGER FUNCTION h5pset_file_locking(fapl_id, use_file_locking, ignore_disabled_locks) BIND(C, NAME='H5Pset_file_locking')
|
||||
IMPORT :: HID_T, C_BOOL
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T), INTENT(IN), VALUE :: fapl_id
|
||||
LOGICAL(C_BOOL), INTENT(IN), VALUE :: use_file_locking
|
||||
LOGICAL(C_BOOL), INTENT(IN), VALUE :: ignore_disabled_locks
|
||||
END FUNCTION h5pset_file_locking
|
||||
END INTERFACE
|
||||
|
||||
! Transfer value of Fortran LOGICAL to C C_BOOL type
|
||||
c_use_flag = use_file_locking
|
||||
c_ignore_flag = ignore_disabled_locks
|
||||
|
||||
hdferr = INT(h5pset_file_locking(fapl_id, c_use_flag, c_ignore_flag))
|
||||
|
||||
END SUBROUTINE h5pset_file_locking_f
|
||||
|
||||
END MODULE H5P
|
||||
|
||||
|
@ -339,6 +339,8 @@ H5P_mp_H5PGET_DSET_NO_ATTRS_HINT_F
|
||||
H5P_mp_H5PSET_DSET_NO_ATTRS_HINT_F
|
||||
H5P_mp_H5PSET_VOL_F
|
||||
H5P_mp_H5PGET_VOL_ID_F
|
||||
H5P_mp_H5PSET_FILE_LOCKING_F
|
||||
H5P_mp_H5PGET_FILE_LOCKING_F
|
||||
; Parallel
|
||||
@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_MPIO_F
|
||||
@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_MPIO_F
|
||||
|
@ -183,9 +183,13 @@ PROGRAM fortranlibtest
|
||||
CALL write_test_status(ret_total_error, ' Multi file driver test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_chunk_cache (cleanup, ret_total_error)
|
||||
CALL test_chunk_cache(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Dataset chunk cache configuration', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_misc_properties(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Miscellaneous properties', total_error)
|
||||
|
||||
!
|
||||
! '========================================='
|
||||
! 'Testing ATTRIBUTE interface '
|
||||
|
@ -724,4 +724,77 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
|
||||
|
||||
END SUBROUTINE test_chunk_cache
|
||||
|
||||
!-------------------------------------------------------------------------
|
||||
! Function: test_misc_properties
|
||||
!
|
||||
! Purpose: Tests setting and getting of miscellaneous properties. Does
|
||||
! not test the underlying functionality as that is done in
|
||||
! the C library tests.
|
||||
!
|
||||
! Tests APIs:
|
||||
! H5P_GET/SET_FILE_LOCKING_F
|
||||
!
|
||||
! Return: Success: 0
|
||||
! Failure: -1
|
||||
!
|
||||
!-------------------------------------------------------------------------
|
||||
!
|
||||
SUBROUTINE test_misc_properties(cleanup, total_error)
|
||||
|
||||
IMPLICIT NONE
|
||||
LOGICAL, INTENT(IN) :: cleanup
|
||||
INTEGER, INTENT(INOUT) :: total_error
|
||||
|
||||
INTEGER(hid_t) :: fapl_id = -1 ! Local fapl
|
||||
LOGICAL :: use_file_locking ! (H5Pset/get_file_locking_f)
|
||||
LOGICAL :: ignore_disabled_locks ! (H5Pset/get_file_locking_f)
|
||||
INTEGER :: error
|
||||
|
||||
! Create a default fapl
|
||||
CALL H5Pcreate_f(H5P_FILE_ACCESS_F, fapl_id, error)
|
||||
CALL check("H5Pcreate_f", error, total_error)
|
||||
|
||||
! Test H5Pset/get_file_locking_f
|
||||
! true values
|
||||
use_file_locking = .TRUE.
|
||||
ignore_disabled_locks = .TRUE.
|
||||
CALL h5pset_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, error)
|
||||
CALL check("h5pset_set_file_locking_f", error, total_error)
|
||||
use_file_locking = .FALSE.
|
||||
ignore_disabled_locks = .FALSE.
|
||||
CALL h5pget_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, error)
|
||||
CALL check("h5pget_set_file_locking_f", error, total_error)
|
||||
if(use_file_locking .neqv. .TRUE.) then
|
||||
total_error = total_error + 1
|
||||
write(*,*) "Got wrong use_file_locking flag from h5pget_file_locking_f"
|
||||
endif
|
||||
if(ignore_disabled_locks .neqv. .TRUE.) then
|
||||
total_error = total_error + 1
|
||||
write(*,*) "Got wrong ignore_disabled_locks flag from h5pget_file_locking_f"
|
||||
endif
|
||||
|
||||
! false values
|
||||
use_file_locking = .FALSE.
|
||||
ignore_disabled_locks = .FALSE.
|
||||
CALL h5pset_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, error)
|
||||
CALL check("h5pset_set_file_locking_f", error, total_error)
|
||||
use_file_locking = .TRUE.
|
||||
ignore_disabled_locks = .TRUE.
|
||||
CALL h5pget_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, error)
|
||||
CALL check("h5pget_set_file_locking_f", error, total_error)
|
||||
if(use_file_locking .neqv. .FALSE.) then
|
||||
total_error = total_error + 1
|
||||
write(*,*) "Got wrong use_file_locking flag from h5pget_file_locking_f"
|
||||
endif
|
||||
if(ignore_disabled_locks .neqv. .FALSE.) then
|
||||
total_error = total_error + 1
|
||||
write(*,*) "Got wrong ignore_disabled_locks flag from h5pget_file_locking_f"
|
||||
endif
|
||||
|
||||
! Close the fapl
|
||||
CALL H5Pclose_f(fapl_id, error)
|
||||
CALL check("H5Pclose_f", error, total_error)
|
||||
|
||||
END SUBROUTINE test_misc_properties
|
||||
|
||||
END MODULE TH5P
|
||||
|
@ -34,7 +34,7 @@ herr_t H5IM_get_palette(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -127,7 +127,7 @@ herr_t H5IMmake_image_8bitf(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -244,7 +244,7 @@ herr_t H5IMmake_image_24bitf(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -302,7 +302,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -395,7 +395,7 @@ herr_t H5IMmake_palettef(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -434,7 +434,7 @@ herr_t H5IMget_palettef(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
|
@ -24,7 +24,7 @@
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -85,7 +85,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -138,7 +138,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -207,7 +207,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -292,7 +292,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -341,7 +341,7 @@ h5imis_image_c(hid_t_f *loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -396,7 +396,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -461,7 +461,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -527,7 +527,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06 2004
|
||||
*
|
||||
@ -588,7 +588,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06 2004
|
||||
*
|
||||
@ -655,7 +655,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06 2004
|
||||
*
|
||||
@ -714,7 +714,7 @@ done:
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
|
@ -41,7 +41,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -95,7 +95,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -142,7 +142,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -204,7 +204,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -267,7 +267,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -313,7 +313,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -364,7 +364,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -416,7 +416,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -467,7 +467,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -516,7 +516,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -567,7 +567,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -619,7 +619,7 @@ CONTAINS
|
||||
!
|
||||
! Return: true, false, fail
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
|
@ -24,7 +24,7 @@
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -94,7 +94,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -153,7 +153,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -218,7 +218,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -274,7 +274,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -373,7 +373,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -460,7 +460,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -535,7 +535,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -595,7 +595,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -643,7 +643,7 @@ h5ltfind_dataset_c(hid_t_f *loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -722,7 +722,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -791,7 +791,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
|
@ -164,7 +164,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 1, 2004
|
||||
!
|
||||
@ -385,7 +385,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -426,7 +426,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -595,7 +595,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -770,7 +770,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -933,7 +933,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -983,7 +983,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -1092,7 +1092,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1143,7 +1143,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1193,7 +1193,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1245,7 +1245,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1350,7 +1350,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1397,7 +1397,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1443,7 +1443,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1490,7 +1490,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1551,7 +1551,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 30, 2004
|
||||
!
|
||||
@ -1600,7 +1600,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1644,7 +1644,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 30, 2004
|
||||
!
|
||||
@ -1703,7 +1703,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1757,7 +1757,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 30, 2004
|
||||
!
|
||||
|
@ -26,7 +26,7 @@
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -301,7 +301,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -350,7 +350,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -398,7 +398,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -443,7 +443,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -487,7 +487,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 13, 2004
|
||||
*
|
||||
@ -534,7 +534,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 13, 2004
|
||||
*
|
||||
@ -580,7 +580,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -627,7 +627,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 13, 2004
|
||||
*
|
||||
|
@ -172,7 +172,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -424,7 +424,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Writes one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 12, 2004
|
||||
!
|
||||
@ -505,7 +505,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Reads one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 12, 2004
|
||||
!
|
||||
@ -586,7 +586,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Writes one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 12, 2004
|
||||
!
|
||||
@ -661,7 +661,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Reads one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 12, 2004
|
||||
!
|
||||
@ -734,7 +734,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Inserts one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 13, 2004
|
||||
!
|
||||
@ -807,7 +807,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Inserts one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 13, 2004
|
||||
!
|
||||
@ -858,7 +858,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 13, 2004
|
||||
!
|
||||
@ -909,7 +909,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 13, 2004
|
||||
!
|
||||
|
543
hl/src/H5DS.c
543
hl/src/H5DS.c
@ -11,9 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "H5DSprivate.h"
|
||||
#include "H5LTprivate.h"
|
||||
#include "H5IMprivate.h"
|
||||
@ -25,29 +22,24 @@ static herr_t H5DS_is_reserved(hid_t did);
|
||||
static hid_t H5DS_get_REFLIST_type(void);
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSset_scale
|
||||
*
|
||||
* Purpose: The dataset DSID is converted to a Dimension Scale dataset.
|
||||
* Creates the CLASS attribute, set to the value "DIMENSION_SCALE"
|
||||
* and an empty REFERENCE_LIST attribute.
|
||||
* If DIMNAME is specified, then an attribute called NAME is created,
|
||||
* with the value DIMNAME.
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSset_scale(hid_t dsid,
|
||||
const char *dimname)
|
||||
* Function: H5DSset_scale
|
||||
*
|
||||
* Purpose: The dataset DSID is converted to a Dimension Scale dataset.
|
||||
* Creates the CLASS attribute, set to the value "DIMENSION_SCALE"
|
||||
* and an empty REFERENCE_LIST attribute.
|
||||
* If DIMNAME is specified, then an attribute called NAME is created,
|
||||
* with the value DIMNAME.
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSset_scale(hid_t dsid, const char *dimname)
|
||||
{
|
||||
int has_dimlist;
|
||||
H5I_type_t it;
|
||||
@ -95,34 +87,28 @@ herr_t H5DSset_scale(hid_t dsid,
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSattach_scale
|
||||
*
|
||||
* Purpose: Define Dimension Scale DSID to be associated with dimension IDX
|
||||
* of Dataset DID. Entries are created in the DIMENSION_LIST and
|
||||
* REFERENCE_LIST attributes.
|
||||
*
|
||||
* Return:
|
||||
* Success: SUCCEED
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* If DSID is not a Dimension Scale
|
||||
* If DID is a Dimension Scale (A Dimension Scale cannot have scales)
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: December 20, 2004
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSattach_scale(hid_t did,
|
||||
hid_t dsid,
|
||||
unsigned int idx)
|
||||
* Function: H5DSattach_scale
|
||||
*
|
||||
* Purpose: Define Dimension Scale DSID to be associated with dimension IDX
|
||||
* of Dataset DID. Entries are created in the DIMENSION_LIST and
|
||||
* REFERENCE_LIST attributes.
|
||||
*
|
||||
* Return:
|
||||
* Success: SUCCEED
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* If DSID is not a Dimension Scale
|
||||
* If DID is a Dimension Scale (A Dimension Scale cannot have scales)
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 20, 2004
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx)
|
||||
{
|
||||
int has_dimlist;
|
||||
int has_reflist;
|
||||
@ -547,39 +533,31 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSdetach_scale
|
||||
*
|
||||
* Purpose: If possible, deletes association of Dimension Scale DSID with
|
||||
* dimension IDX of Dataset DID. This deletes the entries in the
|
||||
* DIMENSION_LIST and REFERENCE_LIST attributes.
|
||||
*
|
||||
* Return:
|
||||
* Success: SUCCEED
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* The dataset DID or DSID do not exist.
|
||||
* The DSID is not a Dimension Scale
|
||||
* DSID is not attached to DID.
|
||||
* Note that a scale may be associated with more than dimension of the same dataset.
|
||||
* If so, the detach operation only deletes one of the associations, for DID.
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: December 20, 2004
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications: Function didn't delete DIMENSION_LIST attribute, when
|
||||
* all dimension scales were detached from a dataset; added.
|
||||
* 2010/05/13 EIP
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSdetach_scale(hid_t did,
|
||||
hid_t dsid,
|
||||
unsigned int idx)
|
||||
* Function: H5DSdetach_scale
|
||||
*
|
||||
* Purpose: If possible, deletes association of Dimension Scale DSID with
|
||||
* dimension IDX of Dataset DID. This deletes the entries in the
|
||||
* DIMENSION_LIST and REFERENCE_LIST attributes.
|
||||
*
|
||||
* Return:
|
||||
* Success: SUCCEED
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* The dataset DID or DSID do not exist.
|
||||
* The DSID is not a Dimension Scale
|
||||
* DSID is not attached to DID.
|
||||
* Note that a scale may be associated with more than dimension of the same dataset.
|
||||
* If so, the detach operation only deletes one of the associations, for DID.
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 20, 2004
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx)
|
||||
{
|
||||
int has_dimlist;
|
||||
int has_reflist;
|
||||
@ -940,35 +918,29 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSis_attached
|
||||
*
|
||||
* Purpose: Report if dimension scale DSID is currently attached to
|
||||
* dimension IDX of dataset DID by checking if DID has a pointer in the REFERENCE_LIST
|
||||
* attribute and DSID (scale ) has a pointer in the DIMENSION_LIST attribute
|
||||
*
|
||||
* Return:
|
||||
* 1: both the DS and the dataset pointers match
|
||||
* 0: one of them or both do not match
|
||||
* FAIL (-1): error
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* If DSID is not a Dimension Scale
|
||||
* If DID is a Dimension Scale (A Dimension Scale cannot have scales)
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: February 18, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
htri_t H5DSis_attached(hid_t did,
|
||||
hid_t dsid,
|
||||
unsigned int idx)
|
||||
* Function: H5DSis_attached
|
||||
*
|
||||
* Purpose: Report if dimension scale DSID is currently attached to
|
||||
* dimension IDX of dataset DID by checking if DID has a pointer in the REFERENCE_LIST
|
||||
* attribute and DSID (scale ) has a pointer in the DIMENSION_LIST attribute
|
||||
*
|
||||
* Return:
|
||||
* 1: both the DS and the dataset pointers match
|
||||
* 0: one of them or both do not match
|
||||
* FAIL (-1): error
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* If DSID is not a Dimension Scale
|
||||
* If DID is a Dimension Scale (A Dimension Scale cannot have scales)
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: February 18, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
htri_t
|
||||
H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx)
|
||||
{
|
||||
int has_dimlist;
|
||||
int has_reflist;
|
||||
@ -1249,54 +1221,47 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSiterate_scales
|
||||
*
|
||||
* Purpose: H5DSiterate_scales iterates over the scales attached to dimension DIM
|
||||
* of dataset DID. For each scale in the list, the visitor_data and some
|
||||
* additional information, specified below, are passed to the visitor function.
|
||||
* The iteration begins with the IDX object in the group and the next element
|
||||
* to be processed by the operator is returned in IDX. If IDX is NULL, then the
|
||||
* iterator starts at zero.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* hid_t DID; IN: the dataset
|
||||
* unsigned int DIM; IN: the dimension of the dataset
|
||||
* int *DS_IDX; IN/OUT: on input the dimension scale index to start iterating,
|
||||
* on output the next index to visit. If NULL, start at
|
||||
* the first position.
|
||||
* H5DS_iterate_t VISITOR; IN: the visitor function
|
||||
* void *VISITOR_DATA; IN: arbitrary data to pass to the visitor function.
|
||||
*
|
||||
* Iterate over all scales of DIM, calling an application callback
|
||||
* with the item, key and any operator data.
|
||||
*
|
||||
* The operator callback receives a pointer to the item ,
|
||||
* and the pointer to the operator data passed
|
||||
* in to H5SL_iterate ('op_data'). The return values from an operator are:
|
||||
* A. Zero causes the iterator to continue, returning zero when all
|
||||
* nodes of that type have been processed.
|
||||
* B. Positive causes the iterator to immediately return that positive
|
||||
* value, indicating short-circuit success.
|
||||
* C. Negative causes the iterator to immediately return that value,
|
||||
* indicating failure.
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 31, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSiterate_scales(hid_t did,
|
||||
unsigned int dim,
|
||||
int *ds_idx,
|
||||
H5DS_iterate_t visitor,
|
||||
void *visitor_data )
|
||||
* Function: H5DSiterate_scales
|
||||
*
|
||||
* Purpose: H5DSiterate_scales iterates over the scales attached to dimension DIM
|
||||
* of dataset DID. For each scale in the list, the visitor_data and some
|
||||
* additional information, specified below, are passed to the visitor function.
|
||||
* The iteration begins with the IDX object in the group and the next element
|
||||
* to be processed by the operator is returned in IDX. If IDX is NULL, then the
|
||||
* iterator starts at zero.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* hid_t DID; IN: the dataset
|
||||
* unsigned int DIM; IN: the dimension of the dataset
|
||||
* int *DS_IDX; IN/OUT: on input the dimension scale index to start iterating,
|
||||
* on output the next index to visit. If NULL, start at
|
||||
* the first position.
|
||||
* H5DS_iterate_t VISITOR; IN: the visitor function
|
||||
* void *VISITOR_DATA; IN: arbitrary data to pass to the visitor function.
|
||||
*
|
||||
* Iterate over all scales of DIM, calling an application callback
|
||||
* with the item, key and any operator data.
|
||||
*
|
||||
* The operator callback receives a pointer to the item ,
|
||||
* and the pointer to the operator data passed
|
||||
* in to H5SL_iterate ('op_data'). The return values from an operator are:
|
||||
* A. Zero causes the iterator to continue, returning zero when all
|
||||
* nodes of that type have been processed.
|
||||
* B. Positive causes the iterator to immediately return that positive
|
||||
* value, indicating short-circuit success.
|
||||
* C. Negative causes the iterator to immediately return that value,
|
||||
* indicating failure.
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 31, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSiterate_scales(hid_t did, unsigned int dim, int *ds_idx,
|
||||
H5DS_iterate_t visitor, void *visitor_data )
|
||||
{
|
||||
hid_t scale_id;
|
||||
int rank;
|
||||
@ -1450,20 +1415,20 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSset_label
|
||||
*
|
||||
* Purpose: Set label for the dimension IDX of dataset DID to the value LABEL
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 11, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
* Function: H5DSset_label
|
||||
*
|
||||
* Purpose: Set label for the dimension IDX of dataset DID to the value LABEL
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 11, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
{
|
||||
int has_labels;
|
||||
hid_t sid = -1; /* space ID */
|
||||
@ -1655,29 +1620,24 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSget_label
|
||||
*
|
||||
* Purpose: Read the label LABEL for dimension IDX of dataset DID
|
||||
* Up to 'size' characters are stored in 'label' followed by a '\0' string
|
||||
* terminator. If the label is longer than 'size'-1,
|
||||
* the string terminator is stored in the last position of the buffer to
|
||||
* properly terminate the string.
|
||||
*
|
||||
* Return: 0 if no label found, size of label if found, Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 11, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
* JIRA HDFFV-7673: Added a check to see if the label name exists,
|
||||
* if not then returns zero. July 30, 2011. MSB
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size)
|
||||
* Function: H5DSget_label
|
||||
*
|
||||
* Purpose: Read the label LABEL for dimension IDX of dataset DID
|
||||
* Up to 'size' characters are stored in 'label' followed by a '\0' string
|
||||
* terminator. If the label is longer than 'size'-1,
|
||||
* the string terminator is stored in the last position of the buffer to
|
||||
* properly terminate the string.
|
||||
*
|
||||
* Return: 0 if no label found, size of label if found, Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 11, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
ssize_t
|
||||
H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size)
|
||||
{
|
||||
int has_labels;
|
||||
hid_t sid = -1; /* space ID */
|
||||
@ -1817,32 +1777,24 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSget_scale_name
|
||||
*
|
||||
* Purpose: Read the name of dataset scale DID into buffer NAME
|
||||
* Up to 'size' characters are stored in 'name' followed by a '\0' string
|
||||
* terminator. If the name is longer than 'size'-1,
|
||||
* the string terminator is stored in the last position of the buffer to
|
||||
* properly terminate the string.
|
||||
*
|
||||
* Return: size of name if found, zero if not found, Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
* The size of the name returned should not include the NULL termination
|
||||
* in its value so as to be consistent with other HDF5 APIs.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
ssize_t H5DSget_scale_name(hid_t did,
|
||||
char *name,
|
||||
size_t size)
|
||||
* Function: H5DSget_scale_name
|
||||
*
|
||||
* Purpose: Read the name of dataset scale DID into buffer NAME
|
||||
* Up to 'size' characters are stored in 'name' followed by a '\0' string
|
||||
* terminator. If the name is longer than 'size'-1,
|
||||
* the string terminator is stored in the last position of the buffer to
|
||||
* properly terminate the string.
|
||||
*
|
||||
* Return: size of name if found, zero if not found, Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
ssize_t
|
||||
H5DSget_scale_name(hid_t did, char *name, size_t size)
|
||||
{
|
||||
hid_t aid; /* attribute ID */
|
||||
hid_t tid = -1; /* attribute type ID */
|
||||
@ -1944,24 +1896,20 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSis_scale
|
||||
*
|
||||
* Purpose: check if the dataset DID is a dimension scale
|
||||
*
|
||||
* Return: 1, is, 0, not, FAIL, error
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
htri_t H5DSis_scale(hid_t did)
|
||||
* Function: H5DSis_scale
|
||||
*
|
||||
* Purpose: check if the dataset DID is a dimension scale
|
||||
*
|
||||
* Return: 1, is, 0, not, FAIL, error
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
htri_t
|
||||
H5DSis_scale(hid_t did)
|
||||
{
|
||||
hid_t tid = -1; /* attribute type ID */
|
||||
hid_t aid = -1; /* attribute ID */
|
||||
@ -2047,27 +1995,22 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSget_num_scales
|
||||
*
|
||||
* Purpose: get the number of scales linked to the IDX dimension of dataset DID
|
||||
*
|
||||
* Return:
|
||||
* Success: number of scales
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 13, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
int H5DSget_num_scales(hid_t did,
|
||||
unsigned int idx)
|
||||
* Function: H5DSget_num_scales
|
||||
*
|
||||
* Purpose: get the number of scales linked to the IDX dimension of dataset DID
|
||||
*
|
||||
* Return:
|
||||
* Success: number of scales
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 13, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
int
|
||||
H5DSget_num_scales(hid_t did, unsigned int idx)
|
||||
{
|
||||
int has_dimlist;
|
||||
hid_t sid; /* space ID */
|
||||
@ -2170,25 +2113,20 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DS_is_reserved
|
||||
*
|
||||
* Purpose: Verify that a dataset's CLASS is either an image, palette or table
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: March 19, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static
|
||||
herr_t H5DS_is_reserved(hid_t did)
|
||||
* Function: H5DS_is_reserved
|
||||
*
|
||||
* Purpose: Verify that a dataset's CLASS is either an image, palette or table
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 19, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5DS_is_reserved(hid_t did)
|
||||
{
|
||||
int has_class;
|
||||
hid_t tid = -1;
|
||||
@ -2261,26 +2199,21 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DS_get_REFLIST_type
|
||||
*
|
||||
* Purpose: This is a helper function to return a native type for
|
||||
* the REFERENCE_LIST attribute.
|
||||
*
|
||||
* Return: Type identifier on success and negative on failure
|
||||
*
|
||||
* Programmer: epourmal@hdfgroup.org
|
||||
*
|
||||
* Date: May 22, 2010
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static
|
||||
hid_t H5DS_get_REFLIST_type(void)
|
||||
* Function: H5DS_get_REFLIST_type
|
||||
*
|
||||
* Purpose: This is a helper function to return a native type for
|
||||
* the REFERENCE_LIST attribute.
|
||||
*
|
||||
* Return: Type identifier on success and negative on failure
|
||||
*
|
||||
* Programmer: Elena Pourmal
|
||||
*
|
||||
* Date: May 22, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static hid_t
|
||||
H5DS_get_REFLIST_type(void)
|
||||
{
|
||||
hid_t ntid_t = -1;
|
||||
|
||||
|
@ -13,8 +13,6 @@
|
||||
|
||||
#include "H5IMprivate.h"
|
||||
#include "H5LTprivate.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5IMmake_image_8bit
|
||||
@ -23,7 +21,7 @@
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: June 13, 2001
|
||||
*
|
||||
@ -77,7 +75,7 @@ herr_t H5IMmake_image_8bit( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: June 13, 2001
|
||||
*
|
||||
@ -162,7 +160,7 @@ herr_t H5IMmake_image_24bit( hid_t loc_id,
|
||||
*
|
||||
* Return:
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 28, 2001
|
||||
*
|
||||
@ -204,7 +202,7 @@ static herr_t find_palette(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 1, Failure: 0
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 11, 2001
|
||||
*
|
||||
@ -230,7 +228,7 @@ herr_t H5IM_find_palette( hid_t loc_id )
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: July 25, 2001
|
||||
*
|
||||
@ -412,7 +410,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: June 13, 2001
|
||||
*
|
||||
@ -462,7 +460,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 01, 2001
|
||||
*
|
||||
@ -518,7 +516,7 @@ herr_t H5IMmake_palette( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 01, 2001
|
||||
*
|
||||
@ -695,7 +693,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: September 10, 2001
|
||||
*
|
||||
@ -796,7 +794,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: July 22, 2001
|
||||
*
|
||||
@ -887,7 +885,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: July 22, 2001
|
||||
*
|
||||
@ -1003,7 +1001,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: August 30, 2001
|
||||
*
|
||||
@ -1110,7 +1108,7 @@ out:
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: August 30, 2001
|
||||
*
|
||||
@ -1214,7 +1212,7 @@ out:
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: August 30, 2001
|
||||
*
|
||||
|
@ -11,10 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include "H5LDprivate.h"
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
|
127
hl/src/H5LT.c
127
hl/src/H5LT.c
@ -11,11 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "H5LTprivate.h"
|
||||
|
||||
/* For Lex and Yacc */
|
||||
@ -504,7 +499,7 @@ static herr_t H5LT_get_attribute_mem(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Quincey Koziol, koziol@hdfgroup.org
|
||||
* Programmer: Quincey Koziol
|
||||
*
|
||||
* Date: October 10, 2007
|
||||
*
|
||||
@ -570,7 +565,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 19, 2001
|
||||
*
|
||||
@ -599,7 +594,7 @@ herr_t H5LTmake_dataset( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -628,7 +623,7 @@ herr_t H5LTmake_dataset_char( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -657,7 +652,7 @@ herr_t H5LTmake_dataset_short( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -688,7 +683,7 @@ herr_t H5LTmake_dataset_int( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -717,7 +712,7 @@ herr_t H5LTmake_dataset_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -748,7 +743,7 @@ herr_t H5LTmake_dataset_float( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -778,7 +773,7 @@ herr_t H5LTmake_dataset_double( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -970,7 +965,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Quincey Koziol, koziol@hdfgroup.org
|
||||
* Programmer: Quincey Koziol
|
||||
*
|
||||
* Date: October 8, 2007
|
||||
*
|
||||
@ -1012,7 +1007,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: June 13, 2001
|
||||
*
|
||||
@ -1035,7 +1030,7 @@ herr_t H5LTread_dataset(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1056,7 +1051,7 @@ herr_t H5LTread_dataset_char( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1077,7 +1072,7 @@ herr_t H5LTread_dataset_short( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1098,7 +1093,7 @@ herr_t H5LTread_dataset_int( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1119,7 +1114,7 @@ herr_t H5LTread_dataset_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1141,7 +1136,7 @@ herr_t H5LTread_dataset_float( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1163,7 +1158,7 @@ herr_t H5LTread_dataset_double( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -1216,7 +1211,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 4, 2001
|
||||
*
|
||||
@ -1272,7 +1267,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 4, 2001
|
||||
* Modified: February 28, 2006: checked for NULL parameters
|
||||
@ -1348,7 +1343,7 @@ out:
|
||||
*
|
||||
* Purpose: operator function used by H5LTfind_dataset
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: June 21, 2001
|
||||
*
|
||||
@ -1392,7 +1387,7 @@ find_dataset(hid_t loc_id, const char *name, const H5L_info2_t *linfo, void *op_
|
||||
* Purpose: Inquires if a dataset named dset_name exists attached
|
||||
* to the object loc_id.
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: July 15, 2001
|
||||
*
|
||||
@ -1436,7 +1431,7 @@ H5_GCC_DIAG_ON(cast-qual)
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: July 23, 2001
|
||||
*
|
||||
@ -1534,7 +1529,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: July 25, 2001
|
||||
*
|
||||
@ -1613,7 +1608,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1643,7 +1638,7 @@ herr_t H5LTset_attribute_char( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -1674,7 +1669,7 @@ herr_t H5LTset_attribute_uchar( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1705,7 +1700,7 @@ herr_t H5LTset_attribute_short( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -1736,7 +1731,7 @@ herr_t H5LTset_attribute_ushort( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1767,7 +1762,7 @@ herr_t H5LTset_attribute_int( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -1799,7 +1794,7 @@ herr_t H5LTset_attribute_uint( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1829,7 +1824,7 @@ herr_t H5LTset_attribute_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Elena Pourmal, epourmal@ncsa.uiuc.edu
|
||||
* Programmer: Elena Pourmal
|
||||
*
|
||||
* Date: June 17, 2005
|
||||
*
|
||||
@ -1861,7 +1856,7 @@ herr_t H5LTset_attribute_long_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -1893,7 +1888,7 @@ herr_t H5LTset_attribute_ulong( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: July 25, 2001
|
||||
*
|
||||
@ -1926,7 +1921,7 @@ herr_t H5LTset_attribute_float( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1957,7 +1952,7 @@ herr_t H5LTset_attribute_double( hid_t loc_id,
|
||||
*
|
||||
* Purpose: operator function used by H5LT_find_attribute
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: June 21, 2001
|
||||
*
|
||||
@ -1998,7 +1993,7 @@ find_attr(hid_t loc_id, const char *name, const H5A_info_t *ainfo,
|
||||
* Purpose: Inquires if an attribute named attr_name exists attached to
|
||||
* the object loc_id.
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: May 17, 2006
|
||||
*
|
||||
@ -2020,7 +2015,7 @@ herr_t H5LTfind_attribute( hid_t loc_id, const char* attr_name )
|
||||
*
|
||||
* Purpose: Inquires if an attribute named attr_name exists attached to the object loc_id.
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: June 21, 2001
|
||||
*
|
||||
@ -2059,7 +2054,7 @@ H5_GCC_DIAG_ON(cast-qual)
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 4, 2001
|
||||
*
|
||||
@ -2129,7 +2124,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 4, 2001
|
||||
*
|
||||
@ -2215,7 +2210,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Raymond Lu, slu@ncsa.uiuc.edu
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: October 6, 2004
|
||||
*
|
||||
@ -2265,7 +2260,7 @@ out:
|
||||
*
|
||||
* Return: void
|
||||
*
|
||||
* Programmer: Raymond Lu, songyulu@hdfgroup.org
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: 29 September 2011
|
||||
*
|
||||
@ -2325,7 +2320,7 @@ out:
|
||||
*
|
||||
* Return: void
|
||||
*
|
||||
* Programmer: Raymond Lu, slu@ncsa.uiuc.edu
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: December 6, 2005
|
||||
*
|
||||
@ -2489,7 +2484,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Raymond Lu, slu@ncsa.uiuc.edu
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: December 6, 2005
|
||||
*
|
||||
@ -2536,7 +2531,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Raymond Lu, slu@ncsa.uiuc.edu
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: December 20, 2005
|
||||
*
|
||||
@ -3101,7 +3096,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3153,7 +3148,7 @@ herr_t H5LTget_attribute_string( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3182,7 +3177,7 @@ herr_t H5LTget_attribute_char( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3213,7 +3208,7 @@ herr_t H5LTget_attribute_uchar( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3242,7 +3237,7 @@ herr_t H5LTget_attribute_short( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3273,7 +3268,7 @@ herr_t H5LTget_attribute_ushort( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3302,7 +3297,7 @@ herr_t H5LTget_attribute_int( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3333,7 +3328,7 @@ herr_t H5LTget_attribute_uint( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3362,7 +3357,7 @@ herr_t H5LTget_attribute_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Elena Pourmal, epourmal@ncsa.uiuc.edu
|
||||
* Programmer: Elena Pourmal
|
||||
*
|
||||
* Date: June 17, 2005
|
||||
*
|
||||
@ -3392,7 +3387,7 @@ herr_t H5LTget_attribute_long_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3422,7 +3417,7 @@ herr_t H5LTget_attribute_ulong( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3454,7 +3449,7 @@ herr_t H5LTget_attribute_float( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3486,7 +3481,7 @@ herr_t H5LTget_attribute_double( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3525,7 +3520,7 @@ herr_t H5LTget_attribute( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3589,7 +3584,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3639,7 +3634,7 @@ out:
|
||||
*
|
||||
* Return: FAIL on error, SUCCESS on success
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "H5PTprivate.h"
|
||||
#include "H5TBprivate.h"
|
||||
|
||||
@ -53,8 +51,8 @@ static herr_t H5PT_get_index(htbl_t *table_id, hsize_t *pt_index);
|
||||
*
|
||||
* Return: Success: table ID, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu (Author of H5PTcreate_fl)
|
||||
* James Laird, jlaird@ncsa.uiuc.edu (Author of H5PTcreate_fl)
|
||||
* Programmer: Nat Furrer (Author of H5PTcreate_fl)
|
||||
* James Laird (Author of H5PTcreate_fl)
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -182,8 +180,8 @@ error:
|
||||
*
|
||||
* Return: Success: table ID, Failure: Negative
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -301,8 +299,8 @@ error:
|
||||
*
|
||||
* Return: Success: table ID, Failure: Negative
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 10, 2004
|
||||
*
|
||||
@ -426,8 +424,8 @@ H5PT_free_id(void *id)
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 10, 2004
|
||||
*
|
||||
@ -475,8 +473,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: April 21, 2004
|
||||
*
|
||||
@ -530,8 +528,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -583,8 +581,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 10, 2004
|
||||
*
|
||||
@ -628,8 +626,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -680,8 +678,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -737,8 +735,8 @@ H5PT_get_index(htbl_t *table, hsize_t *pt_index)
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: April 23, 2004
|
||||
*
|
||||
@ -795,8 +793,8 @@ herr_t H5PTget_index(hid_t table_id, hsize_t *pt_index)
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -832,8 +830,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -861,8 +859,8 @@ herr_t H5PTis_valid(hid_t table_id)
|
||||
*
|
||||
* Return: True: 1, False: 0, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: April 14, 2004
|
||||
*
|
||||
@ -910,8 +908,8 @@ error:
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
* -2 if memory was reclaimed but another error occurred
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: April 12, 2004
|
||||
*
|
||||
|
@ -11,9 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "H5LTprivate.h"
|
||||
#include "H5TBprivate.h"
|
||||
|
||||
@ -55,7 +52,7 @@ static hid_t H5TB_create_type(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Date: January 17, 2001
|
||||
@ -275,7 +272,7 @@ out:
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmers:
|
||||
* Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Pedro Vicente
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
@ -345,7 +342,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -442,7 +439,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 21, 2001
|
||||
*
|
||||
@ -605,7 +602,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 21, 2001
|
||||
*
|
||||
@ -778,7 +775,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 20, 2001
|
||||
*
|
||||
@ -853,7 +850,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -923,7 +920,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -1086,7 +1083,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -1251,7 +1248,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 26, 2001
|
||||
*
|
||||
@ -1413,7 +1410,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 26, 2001
|
||||
*
|
||||
@ -1569,7 +1566,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 5, 2001
|
||||
*
|
||||
@ -1701,7 +1698,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 10, 2001
|
||||
*
|
||||
@ -2059,7 +2056,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 30, 2002
|
||||
*
|
||||
@ -2480,7 +2477,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 30, 2002
|
||||
*
|
||||
@ -2934,7 +2931,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 30, 2001
|
||||
*
|
||||
@ -2960,7 +2957,7 @@ herr_t H5TBAget_title(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: TRUE/FALSE, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 30, 2002
|
||||
*
|
||||
@ -3033,7 +3030,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -3120,7 +3117,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -3240,7 +3237,7 @@ out:
|
||||
*
|
||||
* Return: Success: TRUE/FALSE, Failure: N/A
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -3281,7 +3278,7 @@ hbool_t H5TB_find_field(const char *field, const char *field_list)
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 6, 2001
|
||||
*
|
||||
@ -3345,7 +3342,7 @@ out:
|
||||
*
|
||||
* Return: Success: the memory type ID, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 31, 2004
|
||||
*
|
||||
@ -3445,8 +3442,8 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3512,8 +3509,8 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
|
@ -23,8 +23,6 @@
|
||||
* in test_ds.c will read them.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5DSpublic.h"
|
||||
#include "H5LTpublic.h"
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Friday, April 28, 2006
|
||||
*
|
||||
* Purpose: Test support stuff.
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5DSpublic.h"
|
||||
|
@ -11,10 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "h5hltest.h"
|
||||
#include "H5DOpublic.h"
|
||||
|
||||
|
@ -11,10 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5LTpublic.h"
|
||||
|
@ -11,11 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <setjmp.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5LDpublic.h"
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5LTpublic.h"
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5PTpublic.h"
|
||||
#include "H5TBpublic.h"
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5TBpublic.h"
|
||||
|
@ -22,7 +22,7 @@
|
||||
*
|
||||
* Purpose: generate files for h52gif testing
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@hdfgroup.org
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 15, 2007
|
||||
*
|
||||
|
@ -6687,6 +6687,51 @@ public class H5 implements java.io.Serializable {
|
||||
public synchronized static native void H5Pset_evict_on_close(long fapl_id, boolean evict_on_close)
|
||||
throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5Pget_use_file_locking retrieves whether we are using file locking.
|
||||
*
|
||||
* @param fapl_id
|
||||
* IN: File access property list identifier
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
*
|
||||
**/
|
||||
public synchronized static native boolean H5Pget_use_file_locking(long fapl_id)
|
||||
throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5Pget_use_file_locking retrieves whether we ignore file locks when they are disabled.
|
||||
*
|
||||
* @param fapl_id
|
||||
* IN: File access property list identifier
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
*
|
||||
**/
|
||||
public synchronized static native boolean H5Pget_ignore_disabled_file_locking(long fapl_id)
|
||||
throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5Pset_file_locking sets parameters related to file locking.
|
||||
*
|
||||
* @param fapl_id
|
||||
* IN: File access property list identifier
|
||||
*
|
||||
* @param use_file_locking
|
||||
* IN: Whether the library will use file locking when opening files (mainly for SWMR semantics).
|
||||
*
|
||||
* @param ignore_when_disabled
|
||||
* IN: Whether file locking will be ignored when disabled on a file system (useful for Lustre).
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
*
|
||||
**/
|
||||
public synchronized static native void H5Pset_file_locking(long fapl_id, boolean use_file_locking, boolean ignore_when_disabled)
|
||||
throws HDF5LibraryException;
|
||||
|
||||
// ///// unimplemented /////
|
||||
// herr_t H5Pset_vol(hid_t plist_id, hid_t new_vol_id, const void *new_vol_info);
|
||||
// herr_t H5Pget_vol_id(hid_t plist_id, hid_t *vol_id);
|
||||
|
@ -1375,6 +1375,78 @@ done:
|
||||
return bval;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5Pget_1evict_1on_1close */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pset_file_locking
|
||||
* Signature: (JZZ)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pset_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id, jboolean use_file_locking, jboolean ignore_when_disabled)
|
||||
{
|
||||
hbool_t use_file_locking_val = TRUE;
|
||||
hbool_t ignore_when_disabled_val = TRUE;
|
||||
|
||||
UNUSED(clss);
|
||||
|
||||
use_file_locking_val = (use_file_locking == JNI_TRUE) ? TRUE : FALSE;
|
||||
ignore_when_disabled_val = (ignore_when_disabled == JNI_TRUE) ? TRUE : FALSE;
|
||||
|
||||
if (H5Pset_file_locking((hid_t)fapl_id, use_file_locking_val, ignore_when_disabled_val) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
done:
|
||||
return;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5Pset_1file_1locking */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pget_use_file_locking
|
||||
* Signature: (J)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1use_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id)
|
||||
{
|
||||
hbool_t use_file_locking_val = TRUE;
|
||||
hbool_t unused = TRUE;
|
||||
jboolean bval = JNI_FALSE;
|
||||
|
||||
UNUSED(clss);
|
||||
|
||||
if (H5Pget_file_locking((hid_t)fapl_id, &use_file_locking_val, &unused) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
bval = (use_file_locking_val == TRUE) ? JNI_TRUE : JNI_FALSE;
|
||||
|
||||
done:
|
||||
return bval;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5Pget_1use_1file_1locking */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pget_ignore_disabled_file_locking
|
||||
* Signature: (J)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1ignore_1disabled_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id)
|
||||
{
|
||||
hbool_t ignore_when_disabled_val = TRUE;
|
||||
hbool_t unused = TRUE;
|
||||
jboolean bval = JNI_FALSE;
|
||||
|
||||
UNUSED(clss);
|
||||
|
||||
if (H5Pget_file_locking((hid_t)fapl_id, &unused, &ignore_when_disabled_val) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
bval = (ignore_when_disabled_val == TRUE) ? JNI_TRUE : JNI_FALSE;
|
||||
|
||||
done:
|
||||
return bval;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5Pget_1ignore_1disabled_1file_1locking */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pset_metadata_read_attempts
|
||||
|
@ -390,6 +390,33 @@ JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1evict_1on_1close
|
||||
(JNIEnv *, jclass, jlong);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pset_file_locking
|
||||
* Signature: (JZZ)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pset_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id, jboolean use_file_locking, jboolean ignore_when_disabled);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pget_use_file_locking
|
||||
* Signature: (J)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1use_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pget_ignore_disabled_file_locking
|
||||
* Signature: (J)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1ignore_1disabled_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pset_metadata_read_attempts
|
||||
|
@ -1398,4 +1398,36 @@ public class TestH5Pfapl {
|
||||
fail("H5P_evict_on_close: " + err);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testH5P_file_locking() {
|
||||
boolean use_file_locking = false;
|
||||
boolean ignore_disabled_file_locking = false;
|
||||
try {
|
||||
// false values (usually not the default)
|
||||
H5.H5Pset_file_locking(fapl_id, false, false);
|
||||
use_file_locking = H5.H5Pget_use_file_locking(fapl_id);
|
||||
ignore_disabled_file_locking = H5.H5Pget_ignore_disabled_file_locking(fapl_id);
|
||||
assertFalse("H5P_file_locking", use_file_locking);
|
||||
assertFalse("H5P_file_locking", ignore_disabled_file_locking);
|
||||
|
||||
// true values (typically the default)
|
||||
H5.H5Pset_file_locking(fapl_id, true, true);
|
||||
use_file_locking = H5.H5Pget_use_file_locking(fapl_id);
|
||||
ignore_disabled_file_locking = H5.H5Pget_ignore_disabled_file_locking(fapl_id);
|
||||
assertTrue("H5P_file_locking", use_file_locking);
|
||||
assertTrue("H5P_file_locking", ignore_disabled_file_locking);
|
||||
}
|
||||
catch (HDF5PropertyListInterfaceException err) {
|
||||
// parallel is not supported
|
||||
if (err.getMinorErrorNumber() != HDF5Constants.H5E_UNSUPPORTED) {
|
||||
err.printStackTrace();
|
||||
fail("H5P_test_file_locking: " + err);
|
||||
}
|
||||
}
|
||||
catch (Throwable err) {
|
||||
err.printStackTrace();
|
||||
fail("H5P_test_file_locking: " + err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ JUnit version 4.11
|
||||
.testH5Pset_elink_fapl
|
||||
.testH5P_hyper_vector_size
|
||||
.testH5P_gc_references
|
||||
.testH5P_file_locking
|
||||
.testH5P_family_offset
|
||||
.testH5P_fapl_core
|
||||
.testH5P_fapl_muti
|
||||
@ -37,5 +38,5 @@ JUnit version 4.11
|
||||
|
||||
Time: XXXX
|
||||
|
||||
OK (35 tests)
|
||||
OK (36 tests)
|
||||
|
||||
|
@ -330,6 +330,55 @@ New Features
|
||||
|
||||
(ADB - 2018/07/16)
|
||||
|
||||
- Add file locking configure and CMake options
|
||||
|
||||
HDF5 1.10.0 introduced a file locking scheme, primarily to help
|
||||
enforce SWMR setup. Formerly, the only user-level control of the scheme
|
||||
was via the HDF5_USE_FILE_LOCKING environment variable.
|
||||
|
||||
This change introduces configure-time options that control whether
|
||||
or not file locking will be used and whether or not the library
|
||||
ignores errors when locking has been disabled on the file system
|
||||
(useful on some HPC Lustre installations).
|
||||
|
||||
In both the Autotools and CMake, the settings have the effect of changing
|
||||
the default property list settings (see the H5Pset/get_file_locking()
|
||||
entry, below).
|
||||
|
||||
The yes/no/best-effort file locking configure setting has also been
|
||||
added to the libhdf5.settings file.
|
||||
|
||||
Autotools:
|
||||
|
||||
An --enable-file-locking=(yes|no|best-effort) option has been added.
|
||||
|
||||
yes: Use file locking.
|
||||
no: Do not use file locking.
|
||||
best-effort: Use file locking and ignore "disabled" errors.
|
||||
|
||||
CMake:
|
||||
|
||||
Two self-explanatory options have been added:
|
||||
|
||||
HDF5_USE_FILE_LOCKING
|
||||
HDF5_IGNORE_DISABLED_FILE_LOCKS
|
||||
|
||||
Setting both of these to ON is the equivalent to the Autotools'
|
||||
best-effort setting.
|
||||
|
||||
NOTE:
|
||||
The precedence order of the various file locking control mechanisms is:
|
||||
|
||||
1) HDF5_USE_FILE_LOCKING environment variable (highest)
|
||||
|
||||
2) H5Pset_file_locking()
|
||||
|
||||
3) configure/CMake options (which set the property list defaults)
|
||||
|
||||
4) library defaults (currently best-effort)
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
|
||||
Library:
|
||||
--------
|
||||
@ -507,6 +556,32 @@ New Features
|
||||
|
||||
(DER - 2020/03/18, HDFFV-11057)
|
||||
|
||||
- Add BEST_EFFORT value to HDF5_USE_FILE_LOCKING environment variable
|
||||
|
||||
This change adds a BEST_EFFORT to the TRUE/FALSE, 1/0 settings that
|
||||
were previously accepted. This option turns on file locking but
|
||||
ignores locking errors when the library detects that file locking
|
||||
has been disabled on a file system (useful on some HPC Lustre
|
||||
installations).
|
||||
|
||||
The capitalization of BEST_EFFORT is mandatory.
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
|
||||
- Add H5Pset/get_file_locking() API calls
|
||||
|
||||
This change adds new API calls which can be used to set or get the
|
||||
file locking parameters. The single API call sets both the "use file
|
||||
locking" flag and the "ignore disabled file locking" flag.
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
Parallel Library:
|
||||
-----------------
|
||||
@ -537,11 +612,21 @@ New Features
|
||||
|
||||
(MSB, 2019/01/08, HDFFV-10443)
|
||||
|
||||
- Add wrappers for H5Pset/get_file_locking() API calls
|
||||
|
||||
h5pget_file_locking_f()
|
||||
h5pset_file_locking_f()
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
C++ Library:
|
||||
------------
|
||||
- Added new wrappers for H5Pset/get_create_intermediate_group()
|
||||
LinkCreatPropList::setCreateIntermediateGroup()
|
||||
LinkCreatPropList::getCreateIntermediateGroup()
|
||||
LinkCreatPropList::setCreateIntermediateGroup()
|
||||
|
||||
(BMR - 2019/04/22, HDFFV-10622)
|
||||
|
||||
@ -550,6 +635,16 @@ New Features
|
||||
|
||||
(BMR - 2019/02/14, HDFFV-10532)
|
||||
|
||||
- Add wrappers for H5Pset/get_file_locking() API calls
|
||||
|
||||
FileAccPropList::setFileLocking()
|
||||
FileAccPropList::getFileLocking()
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
|
||||
Java Library:
|
||||
----------------
|
||||
@ -587,6 +682,20 @@ New Features
|
||||
|
||||
(DER - 2018/12/08, HDFFV-10252)
|
||||
|
||||
- Add wrappers for H5Pset/get_file_locking() API calls
|
||||
|
||||
H5Pset_file_locking()
|
||||
H5Pget_use_file_locking()
|
||||
H5Pget_ignore_disabled_file_locking()
|
||||
|
||||
Unlike the C++ and Fortran wrappers, there are separate getters for the
|
||||
two file locking settings, each of which returns a boolean value.
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
|
||||
Tools:
|
||||
------
|
||||
|
149
src/H5F.c
149
src/H5F.c
@ -73,8 +73,6 @@ typedef struct {
|
||||
/* Local Prototypes */
|
||||
/********************/
|
||||
|
||||
static herr_t H5F__close_cb(H5VL_object_t *file_vol_obj);
|
||||
|
||||
/* Callback for getting object counts in a file */
|
||||
static int H5F__get_all_count_cb(void H5_ATTR_UNUSED *obj_ptr, hid_t H5_ATTR_UNUSED obj_id, void *key);
|
||||
|
||||
@ -86,9 +84,6 @@ static int H5F__get_all_ids_cb(void H5_ATTR_UNUSED *obj_ptr, hid_t obj_id, void
|
||||
/* Package Variables */
|
||||
/*********************/
|
||||
|
||||
/* Package initialization variable */
|
||||
hbool_t H5_PKG_INIT_VAR = FALSE;
|
||||
|
||||
|
||||
/*****************************/
|
||||
/* Library Private Variables */
|
||||
@ -105,150 +100,6 @@ H5FL_EXTERN(H5VL_t);
|
||||
/* Declare a free list to manage the H5VL_object_t struct */
|
||||
H5FL_EXTERN(H5VL_object_t);
|
||||
|
||||
/* File ID class */
|
||||
static const H5I_class_t H5I_FILE_CLS[1] = {{
|
||||
H5I_FILE, /* ID class value */
|
||||
0, /* Class flags */
|
||||
0, /* # of reserved IDs for class */
|
||||
(H5I_free_t)H5F__close_cb /* Callback routine for closing objects of this class */
|
||||
}};
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F_init
|
||||
*
|
||||
* Purpose: Initialize the interface from some other layer.
|
||||
*
|
||||
* Return: Success: non-negative
|
||||
*
|
||||
* Failure: negative
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5F_init(void)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(FAIL)
|
||||
/* FUNC_ENTER() does all the work */
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5F_init() */
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
NAME
|
||||
H5F__init_package -- Initialize interface-specific information
|
||||
USAGE
|
||||
herr_t H5F__init_package()
|
||||
RETURNS
|
||||
Non-negative on success/Negative on failure
|
||||
DESCRIPTION
|
||||
Initializes any interface-specific data or routines.
|
||||
|
||||
--------------------------------------------------------------------------*/
|
||||
herr_t
|
||||
H5F__init_package(void)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
|
||||
/*
|
||||
* Initialize the atom group for the file IDs.
|
||||
*/
|
||||
if(H5I_register_type(H5I_FILE_CLS) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to initialize interface")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5F__init_package() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F_term_package
|
||||
*
|
||||
* Purpose: Terminate this interface: free all memory and reset global
|
||||
* variables to their initial values. Release all ID groups
|
||||
* associated with this interface.
|
||||
*
|
||||
* Return: Success: Positive if anything was done that might
|
||||
* have affected other interfaces;
|
||||
* zero otherwise.
|
||||
*
|
||||
* Failure: Never fails
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
int
|
||||
H5F_term_package(void)
|
||||
{
|
||||
int n = 0;
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT_NOERR
|
||||
|
||||
if(H5_PKG_INIT_VAR) {
|
||||
if(H5I_nmembers(H5I_FILE) > 0) {
|
||||
(void)H5I_clear_type(H5I_FILE, FALSE, FALSE);
|
||||
n++; /*H5I*/
|
||||
} /* end if */
|
||||
else {
|
||||
/* Make certain we've cleaned up all the shared file objects */
|
||||
H5F_sfile_assert_num(0);
|
||||
|
||||
/* Destroy the file object id group */
|
||||
n += (H5I_dec_type_ref(H5I_FILE) > 0);
|
||||
|
||||
/* Mark closed */
|
||||
if(0 == n)
|
||||
H5_PKG_INIT_VAR = FALSE;
|
||||
} /* end else */
|
||||
} /* end if */
|
||||
|
||||
FUNC_LEAVE_NOAPI(n)
|
||||
} /* end H5F_term_package() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F__close_cb
|
||||
*
|
||||
* Purpose: Closes a file or causes the close operation to be pended.
|
||||
* This function is called from the API and gets called
|
||||
* by H5Fclose->H5I_dec_ref->H5F__close_cb when H5I_dec_ref()
|
||||
* decrements the file ID reference count to zero. The file ID
|
||||
* is removed from the H5I_FILE group by H5I_dec_ref() just
|
||||
* before H5F__close_cb() is called. If there are open object
|
||||
* headers then the close is pended by moving the file to the
|
||||
* H5I_FILE_CLOSING ID group (the f->closing contains the ID
|
||||
* assigned to file).
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5F__close_cb(H5VL_object_t *file_vol_obj)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
/* Sanity check */
|
||||
HDassert(file_vol_obj);
|
||||
|
||||
/* Close the file */
|
||||
if(H5VL_file_close(file_vol_obj, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close file")
|
||||
|
||||
/* Free the VOL object */
|
||||
if(H5VL_free_object(file_vol_obj) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTDEC, FAIL, "unable to free VOL object")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5F__close_cb() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
|
@ -1642,7 +1642,7 @@ H5FDlock(H5FD_t *file, hbool_t rw)
|
||||
|
||||
/* Call private function */
|
||||
if(H5FD_lock(file, rw) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "file lock request failed")
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTLOCKFILE, FAIL, "file lock request failed")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_API(ret_value)
|
||||
@ -1672,7 +1672,7 @@ H5FD_lock(H5FD_t *file, hbool_t rw)
|
||||
|
||||
/* Dispatch to driver */
|
||||
if(file->cls->lock && (file->cls->lock)(file, rw) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTUPDATE, FAIL, "driver lock request failed")
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTLOCKFILE, FAIL, "driver lock request failed")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -1704,7 +1704,7 @@ H5FDunlock(H5FD_t *file)
|
||||
|
||||
/* Call private function */
|
||||
if(H5FD_unlock(file) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "file unlock request failed")
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTUNLOCKFILE, FAIL, "file unlock request failed")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_API(ret_value)
|
||||
@ -1733,7 +1733,7 @@ H5FD_unlock(H5FD_t *file)
|
||||
|
||||
/* Dispatch to driver */
|
||||
if(file->cls->unlock && (file->cls->unlock)(file) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTUPDATE, FAIL, "driver unlock request failed")
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTUNLOCKFILE, FAIL, "driver unlock request failed")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
@ -36,6 +36,9 @@
|
||||
/* The driver identification number, initialized at runtime */
|
||||
static hid_t H5FD_CORE_g = 0;
|
||||
|
||||
/* Whether to ignore file locks when disabled (env var value) */
|
||||
static htri_t ignore_disabled_file_locks_s = FAIL;
|
||||
|
||||
/* The skip list node type. Represents a region in the file. */
|
||||
typedef struct H5FD_core_region_t {
|
||||
haddr_t start; /* Start address of the region */
|
||||
@ -56,6 +59,7 @@ typedef struct H5FD_core_t {
|
||||
hbool_t backing_store; /* write to file name on flush */
|
||||
hbool_t write_tracking; /* Whether to track writes */
|
||||
size_t bstore_page_size; /* backing store page size */
|
||||
hbool_t ignore_disabled_file_locks;
|
||||
int fd; /* backing store file descriptor */
|
||||
/* Information for determining uniqueness of a file with a backing store */
|
||||
#ifndef H5_HAVE_WIN32_API
|
||||
@ -412,10 +416,20 @@ done:
|
||||
static herr_t
|
||||
H5FD__init_package(void)
|
||||
{
|
||||
char *lock_env_var = NULL; /* Environment variable pointer */
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
/* Check the use disabled file locks environment variable */
|
||||
lock_env_var = HDgetenv("HDF5_USE_FILE_LOCKING");
|
||||
if(lock_env_var && !HDstrcmp(lock_env_var, "BEST_EFFORT"))
|
||||
ignore_disabled_file_locks_s = TRUE; /* Override: Ignore disabled locks */
|
||||
else if(lock_env_var && (!HDstrcmp(lock_env_var, "TRUE") || !HDstrcmp(lock_env_var, "1")))
|
||||
ignore_disabled_file_locks_s = FALSE; /* Override: Don't ignore disabled locks */
|
||||
else
|
||||
ignore_disabled_file_locks_s = FAIL; /* Environment variable not set, or not set correctly */
|
||||
|
||||
if(H5FD_core_init() < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "unable to initialize core VFD")
|
||||
|
||||
@ -798,6 +812,16 @@ H5FD__core_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr
|
||||
/* Save file image callbacks */
|
||||
file->fi_callbacks = file_image_info.callbacks;
|
||||
|
||||
/* Check the file locking flags in the fapl */
|
||||
if(ignore_disabled_file_locks_s != FAIL)
|
||||
/* The environment variable was set, so use that preferentially */
|
||||
file->ignore_disabled_file_locks = ignore_disabled_file_locks_s;
|
||||
else {
|
||||
/* Use the value in the property list */
|
||||
if(H5P_get(plist, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_NAME, &file->ignore_disabled_file_locks) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTGET, NULL, "can't get ignore disabled file locks property")
|
||||
}
|
||||
|
||||
if(fd >= 0) {
|
||||
/* Retrieve information for determining uniqueness of file */
|
||||
#ifdef H5_HAVE_WIN32_API
|
||||
@ -1614,8 +1638,12 @@ H5FD__core_lock(H5FD_t *_file, hbool_t rw)
|
||||
|
||||
/* Place a non-blocking lock on the file */
|
||||
if(HDflock(file->fd, lock_flags | LOCK_NB) < 0) {
|
||||
if(ENOSYS == errno)
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "file locking disabled on this file system (use HDF5_USE_FILE_LOCKING environment variable to override)")
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno) {
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
}
|
||||
else
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to lock file")
|
||||
} /* end if */
|
||||
@ -1649,11 +1677,15 @@ H5FD__core_unlock(H5FD_t *_file)
|
||||
|
||||
if(file->fd >= 0)
|
||||
if(HDflock(file->fd, LOCK_UN) < 0) {
|
||||
if(ENOSYS == errno)
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "file locking disabled on this file system (use HDF5_USE_FILE_LOCKING environment variable to override)")
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno) {
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
}
|
||||
else
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to unlock file")
|
||||
} /* end if */
|
||||
}
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
@ -38,6 +38,9 @@
|
||||
/* The driver identification number, initialized at runtime */
|
||||
static hid_t H5FD_DIRECT_g = 0;
|
||||
|
||||
/* Whether to ignore file locks when disabled (env var value) */
|
||||
static htri_t ignore_disabled_file_locks_s = FAIL;
|
||||
|
||||
/* File operations */
|
||||
#define OP_UNKNOWN 0
|
||||
#define OP_READ 1
|
||||
@ -71,6 +74,7 @@ typedef struct H5FD_direct_t {
|
||||
haddr_t pos; /*current file I/O position */
|
||||
int op; /*last operation */
|
||||
H5FD_direct_fapl_t fa; /*file access properties */
|
||||
hbool_t ignore_disabled_file_locks;
|
||||
#ifndef H5_HAVE_WIN32_API
|
||||
/*
|
||||
* On most systems the combination of device and i-node number uniquely
|
||||
@ -192,10 +196,20 @@ DESCRIPTION
|
||||
static herr_t
|
||||
H5FD__init_package(void)
|
||||
{
|
||||
char *lock_env_var = NULL; /* Environment variable pointer */
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
/* Check the use disabled file locks environment variable */
|
||||
lock_env_var = HDgetenv("HDF5_USE_FILE_LOCKING");
|
||||
if(lock_env_var && !HDstrcmp(lock_env_var, "BEST_EFFORT"))
|
||||
ignore_disabled_file_locks_s = TRUE; /* Override: Ignore disabled locks */
|
||||
else if(lock_env_var && (!HDstrcmp(lock_env_var, "TRUE") || !HDstrcmp(lock_env_var, "1")))
|
||||
ignore_disabled_file_locks_s = FALSE; /* Override: Don't ignore disabled locks */
|
||||
else
|
||||
ignore_disabled_file_locks_s = FAIL; /* Environment variable not set, or not set correctly */
|
||||
|
||||
if(H5FD_direct_init() < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "unable to initialize direct VFD")
|
||||
|
||||
@ -511,6 +525,16 @@ H5FD__direct_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxad
|
||||
file->fa.fbsize = fa->fbsize;
|
||||
file->fa.cbsize = fa->cbsize;
|
||||
|
||||
/* Check the file locking flags in the fapl */
|
||||
if(ignore_disabled_file_locks_s != FAIL)
|
||||
/* The environment variable was set, so use that preferentially */
|
||||
file->ignore_disabled_file_locks = ignore_disabled_file_locks_s;
|
||||
else {
|
||||
/* Use the value in the property list */
|
||||
if(H5P_get(plist, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_NAME, &file->ignore_disabled_file_locks) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTGET, NULL, "can't get ignore disabled file locks property")
|
||||
}
|
||||
|
||||
/* Try to decide if data alignment is required. The reason to check it here
|
||||
* is to handle correctly the case that the file is in a different file system
|
||||
* than the one where the program is running.
|
||||
@ -1303,17 +1327,28 @@ done:
|
||||
static herr_t
|
||||
H5FD__direct_lock(H5FD_t *_file, hbool_t rw)
|
||||
{
|
||||
H5FD_direct_t *file = (H5FD_direct_t*)_file; /* VFD file struct */
|
||||
const int lock = rw ? LOCK_EX : LOCK_SH;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
H5FD_direct_t *file = (H5FD_direct_t*)_file; /* VFD file struct */
|
||||
int lock_flags; /* file locking flags */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
HDassert(file);
|
||||
|
||||
/* Place the lock with non-blocking */
|
||||
if(HDflock(file->fd, lock | LOCK_NB) < 0)
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to flock file")
|
||||
/* Set exclusive or shared lock based on rw status */
|
||||
lock_flags = rw ? LOCK_EX : LOCK_SH;
|
||||
|
||||
/* Place a non-blocking lock on the file */
|
||||
if(HDflock(file->fd, lock_flags | LOCK_NB) < 0) {
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno) {
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
}
|
||||
else
|
||||
HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTLOCKFILE, FAIL, "unable to lock file")
|
||||
}
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -1341,8 +1376,16 @@ H5FD__direct_unlock(H5FD_t *_file)
|
||||
|
||||
HDassert(file);
|
||||
|
||||
if(HDflock(file->fd, LOCK_UN) < 0)
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to flock (unlock) file")
|
||||
if(HDflock(file->fd, LOCK_UN) < 0) {
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno) {
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
}
|
||||
else
|
||||
HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTUNLOCKFILE, FAIL, "unable to unlock file")
|
||||
}
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
@ -1328,9 +1328,9 @@ H5FD__family_lock(H5FD_t *_file, hbool_t rw)
|
||||
for(v = 0; v < u; v++) {
|
||||
if(H5FD_unlock(file->memb[v]) < 0)
|
||||
/* Push error, but keep going */
|
||||
HDONE_ERROR(H5E_IO, H5E_CANTUNLOCK, FAIL, "unable to unlock member files")
|
||||
HDONE_ERROR(H5E_IO, H5E_CANTUNLOCKFILE, FAIL, "unable to unlock member files")
|
||||
} /* end for */
|
||||
HGOTO_ERROR(H5E_IO, H5E_CANTLOCK, FAIL, "unable to lock member files")
|
||||
HGOTO_ERROR(H5E_IO, H5E_CANTLOCKFILE, FAIL, "unable to lock member files")
|
||||
} /* end if */
|
||||
|
||||
done:
|
||||
@ -1362,7 +1362,7 @@ H5FD__family_unlock(H5FD_t *_file)
|
||||
for(u = 0; u < file->nmembs; u++)
|
||||
if(file->memb[u])
|
||||
if(H5FD_unlock(file->memb[u]) < 0)
|
||||
HGOTO_ERROR(H5E_IO, H5E_CANTUNLOCK, FAIL, "unable to unlock member files")
|
||||
HGOTO_ERROR(H5E_IO, H5E_CANTUNLOCKFILE, FAIL, "unable to unlock member files")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
@ -40,6 +40,9 @@
|
||||
/* The driver identification number, initialized at runtime */
|
||||
static hid_t H5FD_LOG_g = 0;
|
||||
|
||||
/* Whether to ignore file locks when disabled (env var value) */
|
||||
static htri_t ignore_disabled_file_locks_s = FAIL;
|
||||
|
||||
/* Driver-specific file access properties */
|
||||
typedef struct H5FD_log_fapl_t {
|
||||
char *logfile; /* Allocated log file name */
|
||||
@ -80,6 +83,7 @@ typedef struct H5FD_log_t {
|
||||
haddr_t eof; /* end of file; current file size */
|
||||
haddr_t pos; /* current file I/O position */
|
||||
H5FD_file_op_t op; /* last operation */
|
||||
hbool_t ignore_disabled_file_locks;
|
||||
char filename[H5FD_MAX_FILENAME_LEN]; /* Copy of file name from open operation */
|
||||
#ifndef H5_HAVE_WIN32_API
|
||||
/* On most systems the combination of device and i-node number uniquely
|
||||
@ -234,10 +238,20 @@ H5FL_DEFINE_STATIC(H5FD_log_t);
|
||||
static herr_t
|
||||
H5FD__init_package(void)
|
||||
{
|
||||
char *lock_env_var = NULL; /* Environment variable pointer */
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
/* Check the use disabled file locks environment variable */
|
||||
lock_env_var = HDgetenv("HDF5_USE_FILE_LOCKING");
|
||||
if(lock_env_var && !HDstrcmp(lock_env_var, "BEST_EFFORT"))
|
||||
ignore_disabled_file_locks_s = TRUE; /* Override: Ignore disabled locks */
|
||||
else if(lock_env_var && (!HDstrcmp(lock_env_var, "TRUE") || !HDstrcmp(lock_env_var, "1")))
|
||||
ignore_disabled_file_locks_s = FALSE; /* Override: Don't ignore disabled locks */
|
||||
else
|
||||
ignore_disabled_file_locks_s = FAIL; /* Environment variable not set, or not set correctly */
|
||||
|
||||
if(H5FD_log_init() < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "unable to initialize log VFD")
|
||||
|
||||
@ -625,6 +639,16 @@ H5FD__log_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
|
||||
} /* end if */
|
||||
} /* end if */
|
||||
|
||||
/* Check the file locking flags in the fapl */
|
||||
if(ignore_disabled_file_locks_s != FAIL)
|
||||
/* The environment variable was set, so use that preferentially */
|
||||
file->ignore_disabled_file_locks = ignore_disabled_file_locks_s;
|
||||
else {
|
||||
/* Use the value in the property list */
|
||||
if(H5P_get(plist, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_NAME, &file->ignore_disabled_file_locks) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTGET, NULL, "can't get ignore disabled file locks property")
|
||||
}
|
||||
|
||||
/* Check for non-default FAPL */
|
||||
if(H5P_FILE_ACCESS_DEFAULT != fapl_id) {
|
||||
/* This step is for h5repart tool only. If user wants to change file driver from
|
||||
@ -1671,11 +1695,15 @@ H5FD__log_lock(H5FD_t *_file, hbool_t rw)
|
||||
|
||||
/* Place a non-blocking lock on the file */
|
||||
if(HDflock(file->fd, lock_flags | LOCK_NB) < 0) {
|
||||
if(ENOSYS == errno)
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "file locking disabled on this file system (use HDF5_USE_FILE_LOCKING environment variable to override)")
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno) {
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
}
|
||||
else
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to lock file")
|
||||
} /* end if */
|
||||
HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTLOCKFILE, FAIL, "unable to lock file")
|
||||
}
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -1704,11 +1732,15 @@ H5FD__log_unlock(H5FD_t *_file)
|
||||
HDassert(file);
|
||||
|
||||
if(HDflock(file->fd, LOCK_UN) < 0) {
|
||||
if(ENOSYS == errno)
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "file locking disabled on this file system (use HDF5_USE_FILE_LOCKING environment variable to override)")
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno) {
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
}
|
||||
else
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to unlock file")
|
||||
} /* end if */
|
||||
HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTUNLOCKFILE, FAIL, "unable to unlock file")
|
||||
}
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
@ -1837,7 +1837,7 @@ H5FD_multi_lock(H5FD_t *_file, hbool_t rw)
|
||||
} /* end if */
|
||||
|
||||
if(nerrors)
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_INTERNAL, H5E_BADVALUE, "error locking member files", -1)
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_VFL, H5E_CANTLOCKFILE, "error locking member files", -1)
|
||||
return 0;
|
||||
|
||||
} /* H5FD_multi_lock() */
|
||||
@ -1874,7 +1874,7 @@ H5FD_multi_unlock(H5FD_t *_file)
|
||||
} END_MEMBERS;
|
||||
|
||||
if(nerrors)
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_INTERNAL, H5E_BADVALUE, "error unlocking member files", -1)
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_VFL, H5E_CANTUNLOCKFILE, "error unlocking member files", -1)
|
||||
|
||||
return 0;
|
||||
} /* H5FD_multi_unlock() */
|
||||
|
@ -39,6 +39,9 @@
|
||||
/* The driver identification number, initialized at runtime */
|
||||
static hid_t H5FD_SEC2_g = 0;
|
||||
|
||||
/* Whether to ignore file locks when disabled (env var value) */
|
||||
static htri_t ignore_disabled_file_locks_s = FAIL;
|
||||
|
||||
/* The description of a file belonging to this driver. The 'eoa' and 'eof'
|
||||
* determine the amount of hdf5 address space in use and the high-water mark
|
||||
* of the file (the current size of the underlying filesystem file). The
|
||||
@ -57,6 +60,7 @@ typedef struct H5FD_sec2_t {
|
||||
haddr_t eof; /* end of file; current file size */
|
||||
haddr_t pos; /* current file I/O position */
|
||||
H5FD_file_op_t op; /* last operation */
|
||||
hbool_t ignore_disabled_file_locks;
|
||||
char filename[H5FD_MAX_FILENAME_LEN]; /* Copy of file name from open operation */
|
||||
#ifndef H5_HAVE_WIN32_API
|
||||
/* On most systems the combination of device and i-node number uniquely
|
||||
@ -189,10 +193,20 @@ H5FL_DEFINE_STATIC(H5FD_sec2_t);
|
||||
static herr_t
|
||||
H5FD__init_package(void)
|
||||
{
|
||||
char *lock_env_var = NULL; /* Environment variable pointer */
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
/* Check the use disabled file locks environment variable */
|
||||
lock_env_var = HDgetenv("HDF5_USE_FILE_LOCKING");
|
||||
if(lock_env_var && !HDstrcmp(lock_env_var, "BEST_EFFORT"))
|
||||
ignore_disabled_file_locks_s = TRUE; /* Override: Ignore disabled locks */
|
||||
else if(lock_env_var && (!HDstrcmp(lock_env_var, "TRUE") || !HDstrcmp(lock_env_var, "1")))
|
||||
ignore_disabled_file_locks_s = FALSE; /* Override: Don't ignore disabled locks */
|
||||
else
|
||||
ignore_disabled_file_locks_s = FAIL; /* Environment variable not set, or not set correctly */
|
||||
|
||||
if(H5FD_sec2_init() < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "unable to initialize sec2 VFD")
|
||||
|
||||
@ -218,7 +232,7 @@ done:
|
||||
hid_t
|
||||
H5FD_sec2_init(void)
|
||||
{
|
||||
hid_t ret_value = H5I_INVALID_HID; /* Return value */
|
||||
hid_t ret_value = H5I_INVALID_HID; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(H5I_INVALID_HID)
|
||||
|
||||
@ -315,6 +329,7 @@ H5FD__sec2_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr
|
||||
struct _BY_HANDLE_FILE_INFORMATION fileinfo;
|
||||
#endif
|
||||
h5_stat_t sb;
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
H5FD_t *ret_value = NULL; /* Return value */
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
@ -372,17 +387,26 @@ H5FD__sec2_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr
|
||||
file->inode = sb.st_ino;
|
||||
#endif /* H5_HAVE_WIN32_API */
|
||||
|
||||
/* Get the FAPL */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id)))
|
||||
HGOTO_ERROR(H5E_VFL, H5E_BADTYPE, NULL, "not a file access property list")
|
||||
|
||||
/* Check the file locking flags in the fapl */
|
||||
if(ignore_disabled_file_locks_s != FAIL)
|
||||
/* The environment variable was set, so use that preferentially */
|
||||
file->ignore_disabled_file_locks = ignore_disabled_file_locks_s;
|
||||
else {
|
||||
/* Use the value in the property list */
|
||||
if(H5P_get(plist, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_NAME, &file->ignore_disabled_file_locks) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTGET, NULL, "can't get ignore disabled file locks property")
|
||||
}
|
||||
|
||||
/* Retain a copy of the name used to open the file, for possible error reporting */
|
||||
HDstrncpy(file->filename, name, sizeof(file->filename));
|
||||
file->filename[sizeof(file->filename) - 1] = '\0';
|
||||
|
||||
/* Check for non-default FAPL */
|
||||
if(H5P_FILE_ACCESS_DEFAULT != fapl_id) {
|
||||
H5P_genplist_t *plist; /* Property list pointer */
|
||||
|
||||
/* Get the FAPL */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id)))
|
||||
HGOTO_ERROR(H5E_VFL, H5E_BADTYPE, NULL, "not a file access property list")
|
||||
|
||||
/* This step is for h5repart tool only. If user wants to change file driver from
|
||||
* family to one that uses single files (sec2, etc.) while using h5repart, this
|
||||
@ -956,11 +980,15 @@ H5FD__sec2_lock(H5FD_t *_file, hbool_t rw)
|
||||
|
||||
/* Place a non-blocking lock on the file */
|
||||
if(HDflock(file->fd, lock_flags | LOCK_NB) < 0) {
|
||||
if(ENOSYS == errno)
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "file locking disabled on this file system (use HDF5_USE_FILE_LOCKING environment variable to override)")
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno) {
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
}
|
||||
else
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to lock file")
|
||||
} /* end if */
|
||||
HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTLOCKFILE, FAIL, "unable to lock file")
|
||||
}
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -989,11 +1017,15 @@ H5FD__sec2_unlock(H5FD_t *_file)
|
||||
HDassert(file);
|
||||
|
||||
if(HDflock(file->fd, LOCK_UN) < 0) {
|
||||
if(ENOSYS == errno)
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "file locking disabled on this file system (use HDF5_USE_FILE_LOCKING environment variable to override)")
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno) {
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
}
|
||||
else
|
||||
HSYS_GOTO_ERROR(H5E_FILE, H5E_BADFILE, FAIL, "unable to unlock file")
|
||||
} /* end if */
|
||||
HSYS_GOTO_ERROR(H5E_VFL, H5E_CANTUNLOCKFILE, FAIL, "unable to unlock file")
|
||||
}
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
@ -1121,10 +1121,11 @@ H5FD__splitter_lock(H5FD_t *_file, hbool_t rw)
|
||||
|
||||
/* Place the lock on each file */
|
||||
if(H5FD_lock(file->rw_file, rw) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTLOCK, FAIL, "unable to lock R/W file")
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTLOCKFILE, FAIL, "unable to lock R/W file")
|
||||
|
||||
if(file->wo_file != NULL)
|
||||
if(H5FD_lock(file->wo_file, rw) < 0)
|
||||
H5FD_SPLITTER_WO_ERROR(file, FUNC, H5E_VFL, H5E_CANTLOCK, FAIL, "unable to lock W/O file")
|
||||
H5FD_SPLITTER_WO_ERROR(file, FUNC, H5E_VFL, H5E_CANTLOCKFILE, FAIL, "unable to lock W/O file")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -1155,10 +1156,11 @@ H5FD__splitter_unlock(H5FD_t *_file)
|
||||
|
||||
/* Remove the lock on each file */
|
||||
if(H5FD_unlock(file->rw_file) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTUNLOCK, FAIL, "unable to unlock R/W file")
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTUNLOCKFILE, FAIL, "unable to unlock R/W file")
|
||||
|
||||
if(file->wo_file != NULL)
|
||||
if(H5FD_unlock(file->wo_file) < 0)
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTUNLOCK, FAIL, "unable to unlock W/O file")
|
||||
HGOTO_ERROR(H5E_VFL, H5E_CANTUNLOCKFILE, FAIL, "unable to unlock W/O file")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
@ -52,6 +52,9 @@
|
||||
/* The driver identification number, initialized at runtime */
|
||||
static hid_t H5FD_STDIO_g = 0;
|
||||
|
||||
/* Whether to ignore file locks when disabled (env var value) */
|
||||
static htri_t ignore_disabled_file_locks_s = -1;
|
||||
|
||||
/* The maximum number of bytes which can be written in a single I/O operation */
|
||||
static size_t H5_STDIO_MAX_IO_BYTES_g = (size_t)-1;
|
||||
|
||||
@ -82,6 +85,7 @@ typedef struct H5FD_stdio_t {
|
||||
haddr_t eof; /* end of file; current file size */
|
||||
haddr_t pos; /* current file I/O position */
|
||||
unsigned write_access; /* Flag to indicate the file was opened with write access */
|
||||
hbool_t ignore_disabled_file_locks;
|
||||
H5FD_stdio_file_op op; /* last operation */
|
||||
#ifndef H5_HAVE_WIN32_API
|
||||
/* On most systems the combination of device and i-node number uniquely
|
||||
@ -231,11 +235,23 @@ static const H5FD_class_t H5FD_stdio_g = {
|
||||
hid_t
|
||||
H5FD_stdio_init(void)
|
||||
{
|
||||
char *lock_env_var = NULL; /* Environment variable pointer */
|
||||
|
||||
/* Clear the error stack */
|
||||
H5Eclear2(H5E_DEFAULT);
|
||||
|
||||
if (H5I_VFL!=H5Iget_type(H5FD_STDIO_g))
|
||||
/* Check the use disabled file locks environment variable */
|
||||
lock_env_var = getenv("HDF5_USE_FILE_LOCKING");
|
||||
if(lock_env_var && !strcmp(lock_env_var, "BEST_EFFORT"))
|
||||
ignore_disabled_file_locks_s = 1; /* Override: Ignore disabled locks */
|
||||
else if(lock_env_var && (!strcmp(lock_env_var, "TRUE") || !strcmp(lock_env_var, "1")))
|
||||
ignore_disabled_file_locks_s = 0; /* Override: Don't ignore disabled locks */
|
||||
else
|
||||
ignore_disabled_file_locks_s = -1; /* Environment variable not set, or not set correctly */
|
||||
|
||||
if (H5I_VFL != H5Iget_type(H5FD_STDIO_g))
|
||||
H5FD_STDIO_g = H5FDregister(&H5FD_stdio_g);
|
||||
|
||||
return H5FD_STDIO_g;
|
||||
} /* end H5FD_stdio_init() */
|
||||
|
||||
@ -318,7 +334,7 @@ H5Pset_fapl_stdio(hid_t fapl_id)
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static H5FD_t *
|
||||
H5FD_stdio_open( const char *name, unsigned flags, hid_t /*UNUSED*/ fapl_id,
|
||||
H5FD_stdio_open( const char *name, unsigned flags, hid_t fapl_id,
|
||||
haddr_t maxaddr)
|
||||
{
|
||||
FILE *f = NULL;
|
||||
@ -396,6 +412,21 @@ H5FD_stdio_open( const char *name, unsigned flags, hid_t /*UNUSED*/ fapl_id,
|
||||
file->eof = (haddr_t)x;
|
||||
}
|
||||
|
||||
/* Check the file locking flags in the fapl */
|
||||
if(ignore_disabled_file_locks_s != -1)
|
||||
/* The environment variable was set, so use that preferentially */
|
||||
file->ignore_disabled_file_locks = ignore_disabled_file_locks_s;
|
||||
else {
|
||||
hbool_t unused;
|
||||
|
||||
/* Use the value in the property list */
|
||||
if(H5Pget_file_locking(fapl_id, &unused, &file->ignore_disabled_file_locks) < 0) {
|
||||
free(file);
|
||||
fclose(f);
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_FILE, H5E_CANTGET, "unable to get use disabled file locks property", NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the file descriptor (needed for truncate and some Windows information) */
|
||||
#ifdef H5_HAVE_WIN32_API
|
||||
file->fd = _fileno(file->fp);
|
||||
@ -1104,10 +1135,13 @@ H5FD_stdio_lock(H5FD_t *_file, hbool_t rw)
|
||||
|
||||
/* Place a non-blocking lock on the file */
|
||||
if(flock(file->fd, lock_flags | LOCK_NB) < 0) {
|
||||
if(ENOSYS == errno)
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_IO, H5E_FCNTL, "file locking disabled on this file system (use HDF5_USE_FILE_LOCKING environment variable to override)", -1)
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno)
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
else
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_IO, H5E_FCNTL, "file lock failed", -1)
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_VFL, H5E_CANTLOCKFILE, "file lock failed", -1)
|
||||
} /* end if */
|
||||
|
||||
/* Flush the stream */
|
||||
@ -1152,10 +1186,13 @@ H5FD_stdio_unlock(H5FD_t *_file)
|
||||
|
||||
/* Place a non-blocking lock on the file */
|
||||
if(flock(file->fd, LOCK_UN) < 0) {
|
||||
if(ENOSYS == errno)
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_IO, H5E_FCNTL, "file locking disabled on this file system (use HDF5_USE_FILE_LOCKING environment variable to override)", -1)
|
||||
if(file->ignore_disabled_file_locks && ENOSYS == errno)
|
||||
/* When errno is set to ENOSYS, the file system does not support
|
||||
* locking, so ignore it.
|
||||
*/
|
||||
errno = 0;
|
||||
else
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_IO, H5E_FCNTL, "file unlock failed", -1)
|
||||
H5Epush_ret(func, H5E_ERR_CLS, H5E_VFL, H5E_CANTUNLOCKFILE, "file unlock failed", -1)
|
||||
} /* end if */
|
||||
|
||||
#endif /* H5_HAVE_FLOCK */
|
||||
|
266
src/H5Fint.c
266
src/H5Fint.c
@ -76,12 +76,14 @@ typedef struct H5F_olist_t {
|
||||
/* Local Prototypes */
|
||||
/********************/
|
||||
|
||||
static herr_t H5F__close_cb(H5VL_object_t *file_vol_obj);
|
||||
static herr_t H5F__set_vol_conn(H5F_t *file);
|
||||
static herr_t H5F__get_objects(const H5F_t *f, unsigned types, size_t max_index, hid_t *obj_id_list, hbool_t app_ref, size_t *obj_id_count_ptr);
|
||||
static int H5F__get_objects_cb(void *obj_ptr, hid_t obj_id, void *key);
|
||||
static herr_t H5F__build_name(const char *prefix, const char *file_name, char **full_name/*out*/);
|
||||
static char *H5F__getenv_prefix_name(char **env_prefix/*in,out*/);
|
||||
static H5F_t *H5F__new(H5F_shared_t *shared, unsigned flags, hid_t fcpl_id, hid_t fapl_id, H5FD_t *lf);
|
||||
static herr_t H5F__check_if_using_file_locks(H5P_genplist_t *fapl, hbool_t *use_file_locking);
|
||||
static herr_t H5F__build_actual_name(const H5F_t *f, const H5P_genplist_t *fapl, const char *name, char ** /*out*/ actual_name);
|
||||
static herr_t H5F__flush_phase1(H5F_t *f);
|
||||
static herr_t H5F__flush_phase2(H5F_t *f, hbool_t closing);
|
||||
@ -91,6 +93,15 @@ static herr_t H5F__flush_phase2(H5F_t *f, hbool_t closing);
|
||||
/* Package Variables */
|
||||
/*********************/
|
||||
|
||||
/* Package initialization variable */
|
||||
hbool_t H5_PKG_INIT_VAR = FALSE;
|
||||
|
||||
/* Based on the value of the HDF5_USE_FILE_LOCKING environment variable.
|
||||
* TRUE/FALSE have obvious meanings. FAIL means the environment variable was
|
||||
* not set, so the code should ignore it and use the fapl value instead.
|
||||
*/
|
||||
htri_t use_locks_env_g = FAIL;
|
||||
|
||||
|
||||
/*****************************/
|
||||
/* Library Private Variables */
|
||||
@ -107,6 +118,186 @@ H5FL_DEFINE(H5F_t);
|
||||
/* Declare a free list to manage the H5F_shared_t struct */
|
||||
H5FL_DEFINE(H5F_shared_t);
|
||||
|
||||
/* File ID class */
|
||||
static const H5I_class_t H5I_FILE_CLS[1] = {{
|
||||
H5I_FILE, /* ID class value */
|
||||
0, /* Class flags */
|
||||
0, /* # of reserved IDs for class */
|
||||
(H5I_free_t)H5F__close_cb /* Callback routine for closing objects of this class */
|
||||
}};
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F_init
|
||||
*
|
||||
* Purpose: Initialize the interface from some other layer.
|
||||
*
|
||||
* Return: Success: non-negative
|
||||
*
|
||||
* Failure: negative
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5F_init(void)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(FAIL)
|
||||
/* FUNC_ENTER() does all the work */
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5F_init() */
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
NAME
|
||||
H5F__init_package -- Initialize interface-specific information
|
||||
USAGE
|
||||
herr_t H5F__init_package()
|
||||
RETURNS
|
||||
Non-negative on success/Negative on failure
|
||||
DESCRIPTION
|
||||
Initializes any interface-specific data or routines.
|
||||
|
||||
--------------------------------------------------------------------------*/
|
||||
herr_t
|
||||
H5F__init_package(void)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
|
||||
/*
|
||||
* Initialize the atom group for the file IDs.
|
||||
*/
|
||||
if(H5I_register_type(H5I_FILE_CLS) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to initialize interface")
|
||||
|
||||
/* Check the file locking environment variable */
|
||||
if(H5F__parse_file_lock_env_var(&use_locks_env_g) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, FAIL, "unable to parse file locking environment variable")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5F__init_package() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F_term_package
|
||||
*
|
||||
* Purpose: Terminate this interface: free all memory and reset global
|
||||
* variables to their initial values. Release all ID groups
|
||||
* associated with this interface.
|
||||
*
|
||||
* Return: Success: Positive if anything was done that might
|
||||
* have affected other interfaces;
|
||||
* zero otherwise.
|
||||
*
|
||||
* Failure: Never fails
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
int
|
||||
H5F_term_package(void)
|
||||
{
|
||||
int n = 0;
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT_NOERR
|
||||
|
||||
if(H5_PKG_INIT_VAR) {
|
||||
if(H5I_nmembers(H5I_FILE) > 0) {
|
||||
(void)H5I_clear_type(H5I_FILE, FALSE, FALSE);
|
||||
n++; /*H5I*/
|
||||
} /* end if */
|
||||
else {
|
||||
/* Make certain we've cleaned up all the shared file objects */
|
||||
H5F_sfile_assert_num(0);
|
||||
|
||||
/* Destroy the file object id group */
|
||||
n += (H5I_dec_type_ref(H5I_FILE) > 0);
|
||||
|
||||
/* Mark closed */
|
||||
if(0 == n)
|
||||
H5_PKG_INIT_VAR = FALSE;
|
||||
} /* end else */
|
||||
} /* end if */
|
||||
|
||||
FUNC_LEAVE_NOAPI(n)
|
||||
} /* end H5F_term_package() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F__close_cb
|
||||
*
|
||||
* Purpose: Closes a file or causes the close operation to be pended.
|
||||
* This function is called from the API and gets called
|
||||
* by H5Fclose->H5I_dec_ref->H5F__close_cb when H5I_dec_ref()
|
||||
* decrements the file ID reference count to zero. The file ID
|
||||
* is removed from the H5I_FILE group by H5I_dec_ref() just
|
||||
* before H5F__close_cb() is called. If there are open object
|
||||
* headers then the close is pended by moving the file to the
|
||||
* H5I_FILE_CLOSING ID group (the f->closing contains the ID
|
||||
* assigned to file).
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5F__close_cb(H5VL_object_t *file_vol_obj)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
/* Sanity check */
|
||||
HDassert(file_vol_obj);
|
||||
|
||||
/* Close the file */
|
||||
if(H5VL_file_close(file_vol_obj, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close file")
|
||||
|
||||
/* Free the VOL object */
|
||||
if(H5VL_free_object(file_vol_obj) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTDEC, FAIL, "unable to free VOL object")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5F__close_cb() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F__parse_file_lock_env_var
|
||||
*
|
||||
* Purpose: Parses the HDF5_USE_FILE_LOCKING environment variable.
|
||||
*
|
||||
* NOTE: This is done in a separate function so we can call it from
|
||||
* the test code.
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5F__parse_file_lock_env_var(htri_t *use_locks)
|
||||
{
|
||||
char *lock_env_var = NULL; /* Environment variable pointer */
|
||||
|
||||
FUNC_ENTER_PACKAGE_NOERR
|
||||
|
||||
/* Check the file locking environment variable */
|
||||
lock_env_var = HDgetenv("HDF5_USE_FILE_LOCKING");
|
||||
if(lock_env_var && (!HDstrcmp(lock_env_var, "FALSE") || !HDstrcmp(lock_env_var, "0")))
|
||||
*use_locks = FALSE; /* Override: Never use locks */
|
||||
else if(lock_env_var && (!HDstrcmp(lock_env_var, "TRUE") || !HDstrcmp(lock_env_var, "BEST_EFFORT") || !HDstrcmp(lock_env_var, "1")))
|
||||
*use_locks = TRUE; /* Override: Always use locks */
|
||||
else
|
||||
*use_locks = FAIL; /* Environment variable not set, or not set correctly */
|
||||
|
||||
FUNC_LEAVE_NOAPI(SUCCEED)
|
||||
} /* end H5F__parse_file_lock_env_var() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -1424,6 +1615,52 @@ H5F__dest(H5F_t *f, hbool_t flush)
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5F__dest() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F__check_if_using_file_locks
|
||||
*
|
||||
* Purpose: Determines if this file will use file locks.
|
||||
*
|
||||
* There are three ways that file locking can be controlled:
|
||||
*
|
||||
* 1) The configure/cmake option that sets the H5_USE_FILE_LOCKING
|
||||
* symbol (which is used as the default fapl value).
|
||||
*
|
||||
* 2) The H5Pset_file_locking() API call, which will override
|
||||
* the configuration default.
|
||||
*
|
||||
* 3) The HDF5_USE_FILE_LOCKING environment variable, which overrides
|
||||
* everything above.
|
||||
*
|
||||
* The main reason to disable file locking is to prevent errors on file
|
||||
* systems where locking is not supported or has been disabled (as is
|
||||
* often the case in parallel file systems).
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5F__check_if_using_file_locks(H5P_genplist_t *fapl, hbool_t *use_file_locking)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
/* Make sure the out parameter has a value */
|
||||
*use_file_locking = TRUE;
|
||||
|
||||
/* Check the fapl property */
|
||||
if(H5P_get(fapl, H5F_ACS_USE_FILE_LOCKING_NAME, use_file_locking) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, FAIL, "can't get use file locking flag")
|
||||
|
||||
/* Check the environment variable */
|
||||
if(use_locks_env_g != FAIL)
|
||||
*use_file_locking = (use_locks_env_g == TRUE) ? TRUE : FALSE;
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5F__check_if_using_file_locks() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F_open
|
||||
@ -1514,8 +1751,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
|
||||
hbool_t set_flag = FALSE; /*set the status_flags in the superblock */
|
||||
hbool_t clear = FALSE; /*clear the status_flags */
|
||||
hbool_t evict_on_close; /* evict on close value from plist */
|
||||
char *lock_env_var = NULL;/*env var pointer */
|
||||
hbool_t use_file_locking; /*read from env var */
|
||||
hbool_t use_file_locking = TRUE; /* Using file locks? */
|
||||
hbool_t ci_load = FALSE; /* whether MDC ci load requested */
|
||||
hbool_t ci_write = FALSE; /* whether MDC CI write requested */
|
||||
H5F_t *ret_value = NULL; /*actual return value */
|
||||
@ -1533,15 +1769,13 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
|
||||
if(NULL == (drvr = H5FD_get_class(fapl_id)))
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, NULL, "unable to retrieve VFL class")
|
||||
|
||||
/* Check the environment variable that determines if we care
|
||||
* about file locking. File locking should be used unless explicitly
|
||||
* disabled.
|
||||
*/
|
||||
lock_env_var = HDgetenv("HDF5_USE_FILE_LOCKING");
|
||||
if(lock_env_var && !HDstrcmp(lock_env_var, "FALSE"))
|
||||
use_file_locking = FALSE;
|
||||
else
|
||||
use_file_locking = TRUE;
|
||||
/* Get the file access property list, for future queries */
|
||||
if(NULL == (a_plist = (H5P_genplist_t *)H5I_object(fapl_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not file access property list")
|
||||
|
||||
/* Check if we are using file locking */
|
||||
if (H5F__check_if_using_file_locks(a_plist, &use_file_locking) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, NULL, "unable to get file locking flag")
|
||||
|
||||
/*
|
||||
* Opening a file is a two step process. First we try to open the
|
||||
@ -1618,8 +1852,8 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
|
||||
if(H5FD_lock(lf, (hbool_t)((flags & H5F_ACC_RDWR) ? TRUE : FALSE)) < 0) {
|
||||
/* Locking failed - Closing will remove the lock */
|
||||
if(H5FD_close(lf) < 0)
|
||||
HDONE_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to close low-level file info")
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to lock the file")
|
||||
HDONE_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, NULL, "unable to close low-level file info")
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTLOCKFILE, NULL, "unable to lock the file")
|
||||
} /* end if */
|
||||
|
||||
/* Create the 'top' file structure */
|
||||
@ -1651,10 +1885,6 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
|
||||
shared = file->shared;
|
||||
lf = shared->lf;
|
||||
|
||||
/* Get the file access property list, for future queries */
|
||||
if(NULL == (a_plist = (H5P_genplist_t *)H5I_object(fapl_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not file access property list")
|
||||
|
||||
/* Check if page buffering is enabled */
|
||||
if(H5P_get(a_plist, H5F_ACS_PAGE_BUFFER_SIZE_NAME, &page_buf_size) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, NULL, "can't get page buffer size")
|
||||
@ -1795,7 +2025,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
|
||||
/* Remove the file lock for SWMR_WRITE */
|
||||
if(use_file_locking && (H5F_INTENT(file) & H5F_ACC_SWMR_WRITE)) {
|
||||
if(H5FD_unlock(file->shared->lf) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to unlock the file")
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTUNLOCKFILE, NULL, "unable to unlock the file")
|
||||
} /* end if */
|
||||
} /* end if */
|
||||
else { /* H5F_ACC_RDONLY: check consistency of status_flags */
|
||||
|
@ -384,6 +384,7 @@ struct H5F_t {
|
||||
unsigned nmounts; /* Number of children mounted to this file */
|
||||
};
|
||||
|
||||
|
||||
/*****************************/
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
@ -394,6 +395,10 @@ H5FL_EXTERN(H5F_t);
|
||||
/* Declare a free list to manage the H5F_shared_t struct */
|
||||
H5FL_EXTERN(H5F_shared_t);
|
||||
|
||||
/* Whether or not to use file locking (based on the environment variable)
|
||||
* FAIL means ignore the environment variable.
|
||||
*/
|
||||
H5_DLLVAR htri_t use_locks_env_g;
|
||||
|
||||
/******************************/
|
||||
/* Package Private Prototypes */
|
||||
@ -412,6 +417,7 @@ H5_DLL herr_t H5F__start_swmr_write(H5F_t *f);
|
||||
H5_DLL herr_t H5F__close(H5F_t *f);
|
||||
H5_DLL herr_t H5F__set_libver_bounds(H5F_t *f, H5F_libver_t low, H5F_libver_t high);
|
||||
H5_DLL herr_t H5F__get_cont_info(const H5F_t *f, H5VL_file_cont_info_t *info);
|
||||
H5_DLL herr_t H5F__parse_file_lock_env_var(htri_t *use_locks);
|
||||
|
||||
/* File mount related routines */
|
||||
H5_DLL herr_t H5F__mount(H5G_loc_t *loc, const char *name, H5F_t *child, hid_t plist_id);
|
||||
@ -472,6 +478,7 @@ H5_DLL herr_t H5F__check_cached_stab_test(hid_t file_id);
|
||||
H5_DLL herr_t H5F__get_maxaddr_test(hid_t file_id, haddr_t *maxaddr);
|
||||
H5_DLL herr_t H5F__get_sbe_addr_test(hid_t file_id, haddr_t *sbe_addr);
|
||||
H5_DLL htri_t H5F__same_file_test(hid_t file_id1, hid_t file_id2);
|
||||
H5_DLL herr_t H5F__reparse_file_lock_variable_test(void);
|
||||
#endif /* H5F_TESTING */
|
||||
|
||||
#endif /* _H5Fpkg_H */
|
||||
|
@ -518,6 +518,8 @@ typedef struct H5F_t H5F_t;
|
||||
#define H5F_ACS_PAGE_BUFFER_SIZE_NAME "page_buffer_size" /* the maximum size for the page buffer cache */
|
||||
#define H5F_ACS_PAGE_BUFFER_MIN_META_PERC_NAME "page_buffer_min_meta_perc" /* the min metadata percentage for the page buffer cache */
|
||||
#define H5F_ACS_PAGE_BUFFER_MIN_RAW_PERC_NAME "page_buffer_min_raw_perc" /* the min raw data percentage for the page buffer cache */
|
||||
#define H5F_ACS_USE_FILE_LOCKING_NAME "use_file_locking" /* whether or not we use file locks for SWMR control and to prevent multiple writers */
|
||||
#define H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_NAME "ignore_disabled_file_locks" /* whether or not we ignore "locks disabled" errors */
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
#define H5F_ACS_MPI_PARAMS_COMM_NAME "mpi_params_comm" /* the MPI communicator */
|
||||
#define H5F_ACS_MPI_PARAMS_INFO_NAME "mpi_params_info" /* the MPI info struct */
|
||||
|
@ -267,3 +267,36 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5F__same_file_test() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5F__reparse_file_lock_variable_test
|
||||
*
|
||||
* Purpose: Re-parse the file locking environment variable.
|
||||
*
|
||||
* Since getenv(3) is fairly expensive, we only parse it once,
|
||||
* when the library opens. This test function is used to
|
||||
* re-parse the environment variable after we've changed it
|
||||
* with setnev(3).
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Dana Robinson
|
||||
* Summer 2020
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5F__reparse_file_lock_variable_test(void)
|
||||
{
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
|
||||
/* Check the file locking environment variable */
|
||||
if(H5F__parse_file_lock_env_var(&use_locks_env_g) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, FAIL, "unable to parse file locking environment variable")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5F__reparse_file_lock_variable_test() */
|
||||
|
||||
|
127
src/H5Pfapl.c
127
src/H5Pfapl.c
@ -281,6 +281,29 @@
|
||||
#define H5F_ACS_VOL_CONN_COPY H5P__facc_vol_copy
|
||||
#define H5F_ACS_VOL_CONN_CMP H5P__facc_vol_cmp
|
||||
#define H5F_ACS_VOL_CONN_CLOSE H5P__facc_vol_close
|
||||
/* Definition for using file locking or not. The default is set
|
||||
* via the configure step.
|
||||
*/
|
||||
#define H5F_ACS_USE_FILE_LOCKING_SIZE sizeof(hbool_t)
|
||||
#if defined H5_USE_FILE_LOCKING && H5_USE_FILE_LOCKING
|
||||
#define H5F_ACS_USE_FILE_LOCKING_DEF TRUE
|
||||
#else
|
||||
#define H5F_ACS_USE_FILE_LOCKING_DEF FALSE
|
||||
#endif
|
||||
#define H5F_ACS_USE_FILE_LOCKING_ENC H5P__encode_hbool_t
|
||||
#define H5F_ACS_USE_FILE_LOCKING_DEC H5P__decode_hbool_t
|
||||
/* Definition for whether we ignore file locking errors when we can
|
||||
* tell that file locking has been disabled on the file system.
|
||||
* The default is set via the configure step.
|
||||
*/
|
||||
#define H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_SIZE sizeof(hbool_t)
|
||||
#if defined H5_IGNORE_DISABLED_FILE_LOCKS && H5_IGNORE_DISABLED_FILE_LOCKS
|
||||
#define H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_DEF TRUE
|
||||
#else
|
||||
#define H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_DEF FALSE
|
||||
#endif
|
||||
#define H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_ENC H5P__encode_hbool_t
|
||||
#define H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_DEC H5P__decode_hbool_t
|
||||
|
||||
|
||||
/******************/
|
||||
@ -447,6 +470,8 @@ static const H5AC_cache_image_config_t H5F_def_mdc_initCacheImageCfg_g = H5F_ACS
|
||||
static const size_t H5F_def_page_buf_size_g = H5F_ACS_PAGE_BUFFER_SIZE_DEF; /* Default page buffer size */
|
||||
static const unsigned H5F_def_page_buf_min_meta_perc_g = H5F_ACS_PAGE_BUFFER_MIN_META_PERC_DEF; /* Default page buffer minimum metadata size */
|
||||
static const unsigned H5F_def_page_buf_min_raw_perc_g = H5F_ACS_PAGE_BUFFER_MIN_RAW_PERC_DEF; /* Default page buffer mininum raw data size */
|
||||
static const hbool_t H5F_def_use_file_locking_g = H5F_ACS_USE_FILE_LOCKING_DEF; /* Default use file locking flag */
|
||||
static const hbool_t H5F_def_ignore_disabled_file_locks_g = H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_DEF; /* Default ignore disabled file locks flag */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -705,6 +730,16 @@ H5P__facc_reg_prop(H5P_genclass_t *pclass)
|
||||
H5F_ACS_VOL_CONN_DEL, H5F_ACS_VOL_CONN_COPY, H5F_ACS_VOL_CONN_CMP, H5F_ACS_VOL_CONN_CLOSE) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
/* Register the use file locking flag */
|
||||
if(H5P__register_real(pclass, H5F_ACS_USE_FILE_LOCKING_NAME, H5F_ACS_USE_FILE_LOCKING_SIZE, &H5F_def_use_file_locking_g,
|
||||
NULL, NULL, NULL, H5F_ACS_USE_FILE_LOCKING_ENC, H5F_ACS_USE_FILE_LOCKING_DEC, NULL, NULL, NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
/* Register the ignore disabled file locks flag */
|
||||
if(H5P__register_real(pclass, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_NAME, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_SIZE, &H5F_def_ignore_disabled_file_locks_g,
|
||||
NULL, NULL, NULL, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_ENC, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_DEC, NULL, NULL, NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5P__facc_reg_prop() */
|
||||
@ -4495,6 +4530,98 @@ done:
|
||||
FUNC_LEAVE_API(ret_value)
|
||||
} /* end H5Pget_evict_on_close() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5Pset_file_locking
|
||||
*
|
||||
* Purpose: Sets the file locking property values.
|
||||
*
|
||||
* Overrides the default file locking flag setting that was
|
||||
* set when the library was configured.
|
||||
*
|
||||
* Can be overridden by the HDF5_USE_FILE_LOCKING environment
|
||||
* variable.
|
||||
*
|
||||
* File locking is used when creating/opening a file to prevent
|
||||
* problematic file accesses.
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Dana Robinson
|
||||
* Spring 2020
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5Pset_file_locking(hid_t fapl_id, hbool_t use_file_locking, hbool_t ignore_when_disabled)
|
||||
{
|
||||
H5P_genplist_t *plist; /* property list pointer */
|
||||
herr_t ret_value = SUCCEED; /* return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE3("e", "ibb", fapl_id, use_file_locking, ignore_when_disabled);
|
||||
|
||||
/* Make sure this is a fapl */
|
||||
if(TRUE != H5P_isa_class(fapl_id, H5P_FILE_ACCESS))
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "property list is not a file access plist")
|
||||
|
||||
/* Get the plist structure */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id)))
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
||||
|
||||
/* Set values */
|
||||
if(H5P_set(plist, H5F_ACS_USE_FILE_LOCKING_NAME, &use_file_locking) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set use file locking property")
|
||||
if(H5P_set(plist, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_NAME, &ignore_when_disabled) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set ignore disabled file locks property")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_API(ret_value)
|
||||
} /* end H5Pset_file_locking() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5Pget_file_locking
|
||||
*
|
||||
* Purpose: Gets the file locking property values.
|
||||
*
|
||||
* File locking is used when creating/opening a file to prevent
|
||||
* problematic file accesses.
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Dana Robinson
|
||||
* Spring 2020
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5Pget_file_locking(hid_t fapl_id, hbool_t *use_file_locking, hbool_t *ignore_when_disabled)
|
||||
{
|
||||
H5P_genplist_t *plist; /* property list pointer */
|
||||
herr_t ret_value = SUCCEED; /* return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE3("e", "i*b*b", fapl_id, use_file_locking, ignore_when_disabled);
|
||||
|
||||
/* Make sure this is a fapl */
|
||||
if(TRUE != H5P_isa_class(fapl_id, H5P_FILE_ACCESS))
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "property list is not an access plist")
|
||||
|
||||
/* Get the plist structure */
|
||||
if(NULL == (plist = (H5P_genplist_t *)H5I_object(fapl_id)))
|
||||
HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
|
||||
|
||||
/* Get values */
|
||||
if(H5P_get(plist, H5F_ACS_USE_FILE_LOCKING_NAME, use_file_locking) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get use file locking property")
|
||||
if(H5P_get(plist, H5F_ACS_IGNORE_DISABLED_FILE_LOCKS_NAME, ignore_when_disabled) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get ignore disabled file locks property")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_API(ret_value)
|
||||
} /* end H5Pget_file_locking() */
|
||||
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
|
@ -380,6 +380,8 @@ H5_DLL herr_t H5Pset_mdc_log_options(hid_t plist_id, hbool_t is_enabled, const c
|
||||
H5_DLL herr_t H5Pget_mdc_log_options(hid_t plist_id, hbool_t *is_enabled, char *location, size_t *location_size, hbool_t *start_on_access);
|
||||
H5_DLL herr_t H5Pset_evict_on_close(hid_t fapl_id, hbool_t evict_on_close);
|
||||
H5_DLL herr_t H5Pget_evict_on_close(hid_t fapl_id, hbool_t *evict_on_close);
|
||||
H5_DLL herr_t H5Pset_file_locking(hid_t fapl_id, hbool_t use_file_locking, hbool_t ignore_when_disabled);
|
||||
H5_DLL herr_t H5Pget_file_locking(hid_t fapl_id, hbool_t *use_file_locking, hbool_t *ignore_when_disabled);
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
H5_DLL herr_t H5Pset_all_coll_metadata_ops(hid_t plist_id, hbool_t is_collective);
|
||||
H5_DLL herr_t H5Pget_all_coll_metadata_ops(hid_t plist_id, hbool_t *is_collective);
|
||||
|
@ -136,6 +136,8 @@ MINOR, FILEACC, H5E_BADFILE, Bad file ID accessed
|
||||
MINOR, FILEACC, H5E_TRUNCATED, File has been truncated
|
||||
MINOR, FILEACC, H5E_MOUNT, File mount error
|
||||
MINOR, FILEACC, H5E_CANTDELETEFILE, Unable to delete file
|
||||
MINOR, FILEACC, H5E_CANTLOCKFILE, Unable to lock file
|
||||
MINOR, FILEACC, H5E_CANTUNLOCKFILE, Unable to unlock file
|
||||
|
||||
# Generic low-level file I/O errors
|
||||
MINOR, FILE, H5E_SEEKERROR, Seek failed
|
||||
|
@ -888,8 +888,8 @@ H5_DLL H5_ATTR_CONST int Nflock(int fd, int operation);
|
||||
#ifndef HDflock
|
||||
/* NOTE: flock(2) is not present on all POSIX systems.
|
||||
* If it is not present, we try a flock() equivalent based on
|
||||
* fcntl(2), then fall back to a function that always fails if
|
||||
* it is not present at all (Windows uses a separate Wflock()
|
||||
* fcntl(2), then fall back to a function that always succeeds
|
||||
* if it is not present at all (Windows uses a separate Wflock()
|
||||
* function).
|
||||
*/
|
||||
#if defined(H5_HAVE_FLOCK)
|
||||
|
@ -687,14 +687,14 @@ Pflock(int fd, int operation) {
|
||||
* Purpose: Wrapper function for systems where no file locking is
|
||||
* available.
|
||||
*
|
||||
* Return: Failure: -1 (always fails)
|
||||
* Return: 0 (success)
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
int H5_ATTR_CONST
|
||||
Nflock(int H5_ATTR_UNUSED fd, int H5_ATTR_UNUSED operation) {
|
||||
/* just fail */
|
||||
return -1;
|
||||
/* just succeed */
|
||||
return 0;
|
||||
} /* end Nflock() */
|
||||
|
||||
|
||||
|
@ -89,5 +89,6 @@ Parallel Filtered Dataset Writes: @PARALLEL_FILTERED_WRITES@
|
||||
Using memory checker: @USINGMEMCHECKER@
|
||||
Memory allocation sanity checks: @MEMORYALLOCSANITYCHECK@
|
||||
Function stack tracing: @CODESTACK@
|
||||
Use file locking: @DESIRED_FILE_LOCKING@
|
||||
Strict file format checks: @STRICT_FORMAT_CHECKS@
|
||||
Optimization instrumentation: @INSTRUMENT_LIBRARY@
|
||||
|
@ -6,8 +6,8 @@
|
||||
case program and explain how to run them.
|
||||
|
||||
2.1. Author and Dates:
|
||||
Version 2: By Albert Cheng (acheng@hdfgroup.org), 2013/06/18.
|
||||
Version 1: By Albert Cheng (acheng@hdfgroup.org), 2013/06/01.
|
||||
Version 2: By Albert Cheng, 2013/06/18.
|
||||
Version 1: By Albert Cheng, 2013/06/01.
|
||||
|
||||
|
||||
%%%%Use Case 1.7%%%%
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Neil Fortner <nfortne2@hdfgroup.org>
|
||||
* Programmer: Neil Fortner
|
||||
* Thursday, August 14, 2008
|
||||
*
|
||||
* Purpose: Tests closing the library after reference counts have been
|
||||
|
@ -12,9 +12,9 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Wednesday, April 8, 1998
|
||||
* Modified: Albert Cheng <acheng@hdfgroup.org>
|
||||
* Modified: Albert Cheng
|
||||
* September 11, 2010
|
||||
*/
|
||||
/*
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Tuesday, June 16, 1998
|
||||
*
|
||||
* Purpose: Tests functions in H5Tbit.c
|
||||
|
@ -11,7 +11,7 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
/* Programmer: Quincey Koziol
|
||||
* Tuesday, February 1, 2005
|
||||
*/
|
||||
#include "h5test.h"
|
||||
|
@ -28146,7 +28146,6 @@ check_auto_cache_resize_aux_fcns(unsigned paged)
|
||||
* Return: void
|
||||
*
|
||||
* Programmer: Mike McGreevy
|
||||
* <mamcgree@hdfgroup.org>
|
||||
* 12/16/08
|
||||
*
|
||||
* Modifications:
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Friday, January 23, 1998
|
||||
*/
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Raymond Lu <slu@ncsa.uiuc.edu>
|
||||
* Programmer: Raymond Lu
|
||||
* Thursday, March 23, 2006
|
||||
*
|
||||
* Purpose: Check if floating-point data created on big-endian and
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Tuesday, May 13, 2003
|
||||
*
|
||||
* Purpose: Test dangling IDs
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Tuesday, December 9, 1997
|
||||
*
|
||||
* Purpose: Tests the dataset interface (H5D)
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Tuesday, December 9, 1997
|
||||
*
|
||||
* Purpose: Tests the data type interface (H5T)
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Tuesday, December 9, 1997
|
||||
*
|
||||
* Purpose: Tests the datatype interface (H5T)
|
||||
|
@ -11,7 +11,7 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/* Programmer: Quincey Koziol <koziol@hdfgroup.org>
|
||||
/* Programmer: Quincey Koziol
|
||||
* Tuesday, June 17, 2008
|
||||
*/
|
||||
#include "h5test.h"
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Tuesday, December 22, 1998
|
||||
*/
|
||||
#include "h5test.h"
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Friday, January 30, 1998
|
||||
*
|
||||
* Purpose: Tests extendible datasets.
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Tuesday, March 3, 1998
|
||||
*
|
||||
* Purpose: Tests datasets stored in external raw files.
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Raymond Lu <songyulu@hdfgroup.org>
|
||||
* Programmer: Raymond Lu
|
||||
* April, 2019
|
||||
*
|
||||
* Purpose: Private function for external.c and external_env.c
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Raymond Lu <songyulu@hdfgroup.org>
|
||||
* Programmer: Raymond Lu
|
||||
* April, 2019
|
||||
*
|
||||
* Purpose: Private function for external.c and external_env.c
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@lbl.gov>
|
||||
* Programmer: Quincey Koziol
|
||||
* July, 2019
|
||||
*
|
||||
* Purpose: Private declaration for external.c and external_env.c
|
||||
|
@ -11,7 +11,7 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
/* Programmer: Quincey Koziol
|
||||
* Friday, February 24, 2006
|
||||
*/
|
||||
#include "h5test.h"
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Raymond Lu <songyulu@hdfgroup.org>
|
||||
* Programmer: Raymond Lu
|
||||
* 7 September 2010
|
||||
*
|
||||
* Purpose: Make sure dataset, file, and library can close properly when a
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Friday, October 23, 1998
|
||||
*
|
||||
* Purpose: This is the first half of a two-part test that makes sure
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
* Programmer: Robb Matzke
|
||||
* Friday, October 23, 1998
|
||||
*
|
||||
* Purpose: This is the second half of a two-part test that makes sure
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Programmer: Quincey Koziol
|
||||
* April 14, 2011
|
||||
*
|
||||
* Purpose: This program is run to generate an HDF5 data file with objects
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Programmer: Quincey Koziol
|
||||
* Jan 5, 2008
|
||||
*
|
||||
* Purpose: This program is run to generate an HDF5 data file with a
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Raymond Lu <slu@ncsa.uiuc.edu>
|
||||
* Programmer: Raymond Lu
|
||||
* Thursday, March 23, 2006
|
||||
*
|
||||
* This program writes floating-point data to the HDF5 file. It generates
|
||||
|
@ -38,7 +38,7 @@ static size_t filter_bogus(unsigned int flags, size_t cd_nelmts,
|
||||
*
|
||||
* Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente <pvn@ncsa.uiuc.edu>
|
||||
* Programmer: Pedro Vicente
|
||||
* Thursday, March 25, 2004
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Friday, June 30, 2006
|
||||
*
|
||||
* This program creates an object with fragmented object header messages
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Thursday, November 09, 2000
|
||||
*
|
||||
* Purpose: Create a two datasets, one with a compound datatypes with array
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Raymond Lu <slu@ncsa.uiuc.edu>
|
||||
* Programmer: Raymond Lu
|
||||
* Feb 27, 2002
|
||||
*
|
||||
* Purpose: This program is run to generate a HDF5 data file with fill
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Oct 24, 2005
|
||||
*
|
||||
* Purpose: This program is run to generate an HDF5 data file with both
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Friday, January 3, 2003
|
||||
*
|
||||
* Purpose: Create a dataset, which should have the newer mtime information
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Tuesday, July 15, 2003
|
||||
*
|
||||
* Purpose: Create a file which will have the newer superblock format.
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Thursday, November 09, 2000
|
||||
*
|
||||
* Purpose: Create a two datasets with compound datatypes, one with no array
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Oct 24, 2005
|
||||
*
|
||||
* Purpose: This program is run to generate an HDF5 data file with an
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Thursday, May 27, 2004
|
||||
*
|
||||
* Purpose: Create two datasets (one for version 1 and one for version 2 of
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Friday, January 3, 2003
|
||||
*
|
||||
* Purpose: Create a dataset, which should have the older mtime information
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Neil Fortner <nfortne2@hdfgroup.org>
|
||||
* Programmer: Neil Fortner
|
||||
* Thursday, July 15, 2010
|
||||
*
|
||||
* Purpose: Creates a file with non-default sizes of lengths and addresses.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user