Merge remote-tracking branch 'origin/develop' into namespace_cleanup_01

This commit is contained in:
Quincey Koziol 2020-08-07 10:06:34 -05:00
commit a2340cec3b
147 changed files with 1997 additions and 952 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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
#-----------------------------------------------------------------------------

View File

@ -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. */

View File

@ -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@

View File

@ -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
##

View File

@ -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

View File

@ -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

View File

@ -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 '

View File

@ -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

View File

@ -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
*

View File

@ -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
*

View File

@ -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
!

View File

@ -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
*

View File

@ -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
!

View File

@ -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
*

View File

@ -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
!

View File

@ -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;

View File

@ -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
*

View File

@ -11,10 +11,6 @@
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <stdio.h>
#include "H5LDprivate.h"
/*-------------------------------------------------------------------------

View File

@ -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
*

View File

@ -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
*

View File

@ -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
*

View File

@ -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"

View File

@ -12,7 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
* Programmer: Quincey Koziol
* Friday, April 28, 2006
*
* Purpose: Test support stuff.

View File

@ -11,8 +11,6 @@
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <stdlib.h>
#include <string.h>
#include "h5hltest.h"
#include "H5srcdir.h"
#include "H5DSpublic.h"

View File

@ -11,10 +11,6 @@
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include "h5hltest.h"
#include "H5DOpublic.h"

View File

@ -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"

View File

@ -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"

View File

@ -11,8 +11,6 @@
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <stdlib.h>
#include <string.h>
#include "h5hltest.h"
#include "H5srcdir.h"
#include "H5LTpublic.h"

View File

@ -11,8 +11,6 @@
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <stdlib.h>
#include <string.h>
#include "h5hltest.h"
#include "H5PTpublic.h"
#include "H5TBpublic.h"

View File

@ -11,8 +11,6 @@
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <stdlib.h>
#include <string.h>
#include "h5hltest.h"
#include "H5srcdir.h"
#include "H5TBpublic.h"

View File

@ -22,7 +22,7 @@
*
* Purpose: generate files for h52gif testing
*
* Programmer: Pedro Vicente, pvn@hdfgroup.org
* Programmer: Pedro Vicente
*
* Date: March 15, 2007
*

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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);
}
}
}

View File

@ -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)

View File

@ -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
View File

@ -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() */
/*-------------------------------------------------------------------------

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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() */

View File

@ -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)

View File

@ -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)

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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 */

View File

@ -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() */

View File

@ -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
/*-------------------------------------------------------------------------

View File

@ -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);

View File

@ -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

View File

@ -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)

View File

@ -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() */

View File

@ -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@

View File

@ -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%%%%

View File

@ -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

View File

@ -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
*/
/*

View File

@ -12,7 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Robb Matzke <matzke@llnl.gov>
* Programmer: Robb Matzke
* Tuesday, June 16, 1998
*
* Purpose: Tests functions in H5Tbit.c

View File

@ -11,7 +11,7 @@
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
/* Programmer: Quincey Koziol
* Tuesday, February 1, 2005
*/
#include "h5test.h"

View File

@ -28146,7 +28146,6 @@ check_auto_cache_resize_aux_fcns(unsigned paged)
* Return: void
*
* Programmer: Mike McGreevy
* <mamcgree@hdfgroup.org>
* 12/16/08
*
* Modifications:

View File

@ -12,7 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Robb Matzke <matzke@llnl.gov>
* Programmer: Robb Matzke
* Friday, January 23, 1998
*/

View File

@ -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

View File

@ -12,7 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
* Programmer: Quincey Koziol
* Tuesday, May 13, 2003
*
* Purpose: Test dangling IDs

View File

@ -12,7 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Robb Matzke <matzke@llnl.gov>
* Programmer: Robb Matzke
* Tuesday, December 9, 1997
*
* Purpose: Tests the dataset interface (H5D)

View File

@ -12,7 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Robb Matzke <matzke@llnl.gov>
* Programmer: Robb Matzke
* Tuesday, December 9, 1997
*
* Purpose: Tests the data type interface (H5T)

View File

@ -12,7 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Robb Matzke <matzke@llnl.gov>
* Programmer: Robb Matzke
* Tuesday, December 9, 1997
*
* Purpose: Tests the datatype interface (H5T)

View File

@ -11,7 +11,7 @@
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Programmer: Quincey Koziol <koziol@hdfgroup.org>
/* Programmer: Quincey Koziol
* Tuesday, June 17, 2008
*/
#include "h5test.h"

View File

@ -12,7 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Robb Matzke <matzke@llnl.gov>
* Programmer: Robb Matzke
* Tuesday, December 22, 1998
*/
#include "h5test.h"

View File

@ -12,7 +12,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
* Programmer: Robb Matzke <matzke@llnl.gov>
* Programmer: Robb Matzke
* Friday, January 30, 1998
*
* Purpose: Tests extendible datasets.

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -11,7 +11,7 @@
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
/* Programmer: Quincey Koziol
* Friday, February 24, 2006
*/
#include "h5test.h"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*
*-------------------------------------------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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