The C Interfaces:
H5check_version
(
unsigned majnum
,
unsigned minnum
,
unsigned relnum
)
H5check_version
verifies that the version of the HDF5
library with which an application was compiled, as indicated by
the passed parameters, matches the version of the HDF5 library
against which the application is currently linked.
majnum
is the major version number of the HDF library
with which the application was compiled,
minnum
is the minor version number, and
relnum
is the release number.
Consider the following illustration:
HDF5 Release <majnum
>.<minnum
>.<relnum
>
majnum
.
minnum
.
relnum
.
As stated above,
H5check_version
first verifies that the version
of the HDF5 library with which an application was compiled
matches the version of the HDF5 library against which the
application is currently linked.
If this check fails, H5check_version
causes the
application to abort
(by means of a standard C abort()
call)
and prints information that is usually useful for debugging.
This precaution is is taken to avoid the risks of data corruption
or segmentation faults.
The most common cause of this failure is that an application was compiled with one version of HDF5 and is dynamically linked with a different version different version.
If the above test passes, H5check_version
proceeds to
verify the consistency of additional library version information.
This is designed to catch source code inconsistencies that
do not normally cause failures;
if this check reveals an inconsistency, an informational warning
is printed but the application is allowed to run.
unsigned majnum |
IN: HDF5 library major version number. |
unsigned minnum |
IN: HDF5 library minor version number. |
unsigned relnum |
IN: HDF5 library release number. |
SUBROUTINE h5check_version_f(majnum, minnum, relnum, error) INTEGER, INTENT(IN) :: majnum, minnum, relnum INTEGER, INTENT(OUT) :: error
Inputs:
majnum - major version of the library minum - minor version of the library relnum - release version of the library
Outputs:
error - Returns 0 if successful and -1 if fails
Release | Change |
1.4.5 | Fortran subroutine introduced in this release. |
1.8.8 | Fortran updated to Fortran 2003. |
H5close
(void)
H5close
flushes all data to disk,
closes all open HDF5 identifiers, and cleans up all memory used by
the HDF5 library. This function is generally called when the
application calls exit()
, but may be called earlier
in the event of an emergency shutdown or out of a desire to free all
resources used by the HDF5 library.
When the HDF5 Library is employed in a Fortran90 application,
h5close_f
closes the HDF5 Fortran interface
but does not shut down the HDF5 Library, leaving HDF5 available
to other software that may require the resource.
h5open_f
and h5close_f
are
required calls in HDF5 Fortran applications.
SUBROUTINE h5close_f(error) INTEGER, INTENT(OUT) :: error
Outputs:
error - Returns 0 if successful and -1 if fails
Release | Change |
1.8.8 | Fortran subroutine updated modified so that it does not shut down the HDF5 Library. |
H5dont_atexit
(void)
atexit
cleanup routine.
H5dont_atexit
indicates to the library that an
atexit()
cleanup routine should not be installed.
The major purpose for this is in situations where the
library is dynamically linked into an application and is
un-linked from the application before exit()
gets
called. In those situations, a routine installed with
atexit()
would jump to a routine which was
no longer in memory, causing errors.
In order to be effective, this routine must be called before any other HDF function calls, and must be called each time the library is loaded/linked into the application (the first time and after it's been un-loaded).
SUBROUTINE h5dont_atexit_f(error) INTEGER, INTENT(OUT) :: error
Outputs:
error - Returns 0 if successful and -1 if fails
Release | Change |
1.4.5 | Fortran subroutine introduced in this release. |
1.8.8 | Fortran subroutine updated in this release. |
H5garbage_collect
(void)
H5garbage_collect
walks through all the garbage
collection routines of the library, freeing any unused memory.
It is not required that H5garbage_collect
be called
at any particular time; it is only necessary in certain situations
where the application has performed actions that cause the library
to allocate many objects. The application should call
H5garbage_collect
if it eventually releases those
objects and wants to reduce the memory used by the library from
the peak usage required.
The library automatically garbage collects all the free lists when the application ends.
SUBROUTINE h5garbage_collect_f(error) INTEGER, INTENT(OUT) :: error
Outputs:
error - Returns 0 if successful and -1 if fails
Release | Fortran90 |
1.4.5 | Function introduced in this release. |
1.8.8 | Fortran subroutine updated in this release. |
H5get_libversion
(
unsigned *majnum
,
unsigned *minnum
,
unsigned *relnum
)
H5get_libversion
retrieves the major, minor, and release
numbers of the version of the HDF library which is linked to
the application.
unsigned *majnum |
OUT: The major version of the library. |
unsigned *minnum |
OUT: The minor version of the library. |
unsigned *relnum |
OUT: The release number of the library. |
SUBROUTINE h5get_libversion_f(majnum, minnum, relnum, error) INTEGER, INTENT(OUT) :: majnum, minnum, relnum, error
Outputs:
majnum - major version of the library minum - minor version of the library relnum - release version of the library error - Returns 0 if successful and -1 if fails
Release | Change |
1.4.5 | Fortran subroutine introduced in this release. |
1.8.8 | Fortran subroutine updated in this release. |
H5open
(void)
H5open
initialize the library.
When the HDF5 Library is employed in a C application,
this function is normally called automatically, but if you
find that an HDF5 library function is failing inexplicably,
try calling this function first.
If you wish to elimnate this possibility, it is safe to
routinely call H5open
before an application
starts working with the library as there are no damaging
side-effects in calling it more than once.
When the HDF5 Library is employed in a Fortran90 application,
h5open_f
initializes global variables
(for example, predefined types) and performs other tasks required
to initialize the HDF5 Fortran Library.
h5open_f
and h5close_f
are
required calls in HDF5 Fortran applications.
SUBROUTINE h5open_f(error) INTEGER, INTENT(OUT) :: error
Outputs:
error - Returns 0 if successful and -1 if fails
Release | Change |
1.8.8 | Fortran subroutine updated in this release. |
H5set_free_list_limits
(
int reg_global_lim
,
int reg_list_lim
,
int arr_global_lim
,
int arr_list_lim
,
int blk_global_lim
,
int blk_list_lim
)
H5set_free_list_limits
sets size limits
on all types of free lists.
The HDF5 library uses free lists internally to manage memory.
The types of free lists used are as follows:
The parameters specify global and per-list limits; for example,
reg_global_limit
and reg_list_limit
limit the
accumulated size of all regular free lists and the size of each
individual regular free list, respectively. Therefore, if an application
sets a 1Mb limit on each of the global lists, up to 4Mb of total storage
might be allocated, 1Mb for each of the regular, array, block, and
factory type lists.
The settings specified for block free lists are duplicated for factory free lists. Therefore, increasing the global limit on block free lists by x bytes will increase the potential free list memory usage by 2x bytes.
Using a value of -1
for a limit means that
no limit is set for the specified type of free list.
int reg_global_lim |
IN: The cumulative limit, in bytes,
on memory used for all regular free lists
(Default: 1MB) |
int reg_list_lim |
IN: The limit, in bytes,
on memory used for each regular free list
(Default: 64KB) |
int arr_global_lim |
IN: The cumulative limit, in bytes,
on memory used for all array free lists
(Default: 4MB) |
int arr_list_lim |
IN: The limit, in bytes,
on memory used for each array free list
(Default: 256KB) |
int blk_global_lim |
IN: The cumulative limit, in bytes,
on memory used for all block free lists and, separately,
for all factory free lists
(Default: 16MB) |
int blk_list_lim |
IN: The limit, in bytes,
on memory used for each block or factory free list
(Default: 1MB) |
Release | C |
1.6.0 | Function introduced in this release. |
1.8.3 | Function changed in this release to set factory free list memory limits. |
H5_VERSION_GE(
int maj,
int min,
int rel
)
H5_VERSION_GE
and H5_VERSION_LE
macros are used at compile time to conditionally include or exclude
code based on the version of the HDF5 library against which
an application will be linked.
H5_VERSION_GE
macro compares the version of
the HDF5 library being used against the version number specified
in the parameters.
For more information, see “HDF5 Software Updates” at
www.hdfgroup.org/HDF5/doc/TechNotes/Version.html
.
int maj |
IN: Major version number A non-negative integer value |
int min |
IN: Minor version number A non-negative integer value |
int rel |
IN: Release number A non-negative integer value |
TRUE |
If the library version is greater than or equal to the version number specified |
FALSE |
If the library version is less than the version number specified |
A library version is greater than the specified version number if its major version is larger than the specified major version number. If the major version numbers are the same, it is greater than the specified version number if its minor version is larger than the specified minor version number. If the minor version numbers are the same, then a library version would be greater than the specified version number if its release number is larger than the specified release number.
H5Lxxx
,
are new in the 1.8 versions of HDF5,
and some group functions, H5Gxxx
,
are deprecated in the 1.8 versions.
The following code uses H5Ldelete
if the library version
is 1.8.0 or greater or uses H5Gunlink
if the
library version is not greater than 1.8.0.
Similarly, the code calls H5Lexists
or
H5Gopen
to make sure the group has been deleted.
#if H5_VERSION_GE(1,8,0) ret = H5Ldelete(file, "Group", H5P_DEFAULT); CHECK(ret, FAIL, "H5Lunlink"); status = H5Lexists(file, "Group", H5P_DEFAULT); VERIFY(status, FALSE, "H5Lexists"); #else ret = H5Gunlink(file, "Group"); CHECK(ret, FAIL, "H5Gunlink"); H5E_BEGIN_TRY { grp = H5Gopen(file, "Group"); } H5E_END_TRY; VERIFY(grp, FAIL, "H5Gopen"); #endif
Release |
Change |
1.8.7 | C macro introduced in this release. |
H5_VERSION_LE(
int maj,
int min,
int rel
)
H5_VERSION_GE
and H5_VERSION_LE
macros are used at compile time to conditionally include or exclude
code based on the version of the HDF5 library against which
an application will be linked.
H5_VERSION_LE
macro compares the version of
the HDF5 library being used against the version number specified
in the parameters.
For more information, see “HDF5 Software Updates” at
www.hdfgroup.org/HDF5/doc/TechNotes/Version.html
.
int maj |
IN: Major version number A non-negative integer value |
int min |
IN: Minor version number A non-negative integer value |
int rel |
IN: Release number A non-negative integer value |
TRUE |
If the library version is less than or equal to the version number specified |
FALSE |
If the library version is greater than the version number specified |
A library version is less than the specified version number if its major version is smaller than the specified major version number. If the major version numbers are the same, it is less than the specified version number if its minor version is smaller than the specified minor version number. If the minor version numbers are the same, then a library version would be less than the specified version number if its release number is smaller than the specified release number.
H5Lxxx
,
are new in the 1.8 versions of HDF5, and some group functions,
H5Gxxx
, are deprecated in the 1.8 versions.
The following code uses H5Gunlink
if the
library version is 1.6.10 or earlier or uses H5Ldelete
if the library version is not 1.6.10 or earlier. Similarly, the code
calls H5Gopen
or H5Lexists
to make sure the group has been deleted.
#if H5_VERSION_LE(1,6,10) ret = H5Gunlink(file, "Group"); CHECK(ret, FAIL, "H5Gunlink"); H5E_BEGIN_TRY { grp = H5Gopen(file, "Group"); } H5E_END_TRY; VERIFY(grp, FAIL, "H5Gopen"); #else ret = H5Ldelete(file, "Group", H5P_DEFAULT); CHECK(ret, FAIL, "H5Lunlink"); status = H5Lexists(file, "Group", H5P_DEFAULT); VERIFY(status, FALSE, "H5Lexists"); #endif
Release |
Change |
1.8.7 | C macro introduced in this release. |
The HDF Group Help Desk: ![]() Describes HDF5 Release 1.8.12, November 2013. |
Copyright by
The HDF Group
and the Board of Trustees of the University of Illinois |