* updated the complex datatype information and examples for F2003, HELP-2755
* updated derived types for Fortran 2003, uses doxygen awesome tabs feature
clang complains that H5FD_MEM_NTYPES, which is a member of H5FD_mem_t,
is being used with a variable of type H5F_mem_page_t. This is fine
since H5F_mem_t is a subset of H5F(D)_mem_page_t and we're restricting
ourselves to the subset in this case.
Some standard headers might implicitly include `float.h`. If that happens
before `__STDC_WANT_IEC_60559_TYPES_EXT__` is defined, the macros that
are needed for the `_Float16` data type (like `FLT16_MAX`) might not be
defined.
That is happening with mingw-w64 headers since the following change: b40b6a021d
Define `__STDC_WANT_IEC_60559_TYPES_EXT__` before including other headers
in `H5private.h` to make that scenario less likely.
* Fix error in H5Ddebug(). Add h5ls test cases.
* Committing clang-format changes
* Fix cmake (hopefully)
* Fix cmake again (hopefully)
* Fix issue with modification times showing up differently on different
systems. Add test case for v1 b-trees.
* Add cmake for new tests
* Add RELEASE.txt entry
---------
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
The AWS configuration and authorization setup code needs to be
consolidated into one location in order to check AWS environment
variables and configuration files as well as fapl parameters.
This changeset pushes some stragglers into the s3comms code.
Also includes some cleanup, like removing useless macros,
making the s3comms functions package functions, and
renames things for symmetry and readability.
* Changed comment style to avoid long line issue.
* Update H5Mpublic.h for clang format
---------
Co-authored-by: Dana Robinson <43805+derobins@users.noreply.github.com>
Added infrastructure support for multithreaded concurrency by adding an optional way to switch to using a non-recursive R/W lock for the global API lock. This is enabled with a new 'concurrency' configuration flag for the autotools & CMake builds, which is disabled by default.
When the 'concurrency' build option is chosen, the global API lock will use the R/W lock and all API calls currently will acquire a write lock, ensuring exclusive access by one thread. Over time, the API routines that are converted to support multithreaded concurrency will switch to acquiring a read lock instead.
Reentering the library from application callbacks is managed by the 'disable locking for this thread' (DLFTT) threadsafety protocol. This is internally handled within the H5_API_LOCK / H5_API_UNLOCK macros in H5private.h (as before), which invoke the 'dlftt' routines in H5TSint.c.
To support this change, the threadsafety configuration macros for the library have been updated:
- --enable-threadsafe now defines the H5_HAVE_THREADSAFE macro
- --enable-concurrency defines the H5_HAVE_CONCURRENCY macro
The new H5_HAVE_THREADSAFE_API macro is set if either H5_HAVE_THREADSAFE or H5_HAVE_CONCURRENCY is enabled.
New Github actions are added to include the concurrency configuration in the CI for the develop branch.
To support the new non-recursive R/W locking for API routines, some other changes are necessary:
Added macro wrappers around all callback invocations that could call an
application function, and therefore re-enter the library:
H5_BEFORE_USER_CB* / H5_AFTER_USER_CB*
Added H5_user_cb_prepare / H5_user_cb_restore routines that save the
state of the library when callback leaves the library. Includes error
stack and threadsafe reentry state currently.
There's also some small cleanups to various places in the library:
Moved the H5E_mpi_error_str / H5E_mpi_error_str_len globals to be local for
pushing MPI errors, so that multiple threads can't interfere with each
other.
Added H5TS_rwlock_trywrlock() routine to R/W lock interface.
Emulate R/W locks on MacOS because its implementation of
pthread_rwlock_wrlock() does not conform to the POSIX standard.
Don't acquire the global API lock in H5close, since it's acquired in H5_term_library, which is necessary because H5_term_library is invoked via other code paths that don't hold the global API lock.
Don't call H5Eget_auto2 API routine within H5_term_library.
Switched 'return NULL' in H5allocate_memory to HGOTO_DONE(NULL).
Switched H5Pget_file_space_strategy / H5Pset_file_space_strategy to use
internal routines instead of API routines.
Switched H5Oopen_by_addr & H5Ovisit1 to use internal routines instead of
API routines.
Fixed a few places in src/H5Odeprec.c where a major
error ID was passed as a minor ID.
* Add release information to enum constants - Part 1
- Added \since to enum constants added in 1.8.x versions
- Removed unnecessary continuation backslashes in doxygen comments; they
are displayed in the generated output.
The hash_size parameter of H5Iregister_type() hasn't been used since 1.8.
It's been removed and the API call has been versioned.
This PR also updates the make_vers script to handle v2.0.0.
Fixes#4344