summaryrefslogtreecommitdiffstats
path: root/src/H5TS.c
Commit message (Collapse)AuthorAgeFilesLines
* Commit codespell spelling corrections.Larry Knox2022-04-071-7/+7
|
* Brings the thread-safety recursive writer locks to 1.12 (#466)Dana Robinson2021-05-141-235/+983
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * First cut at replaceing the existing mutex with a recursive R/W lock. This implementation has the following issues: 1) pthreads implementation only -- we still need a windows version. 2) must investigate thread cancelation issues 3) Error reporting is very poor. I followed the error reporting on the existing thread safe code, but this should be re-visited and improved. Code is currently setup to use the new recursive R/W lock instead of the global mutex to control entry to the library in threadsafe builds. To revert to the global mutex, set H5TS__USE_REC_RW_LOCK_FOR_GLOBAL_MUTEX in H5TSprivate.h to FALSE. Added a reasonably robust regression test for the reursive R/W lock in test/ttsafe_rec_rw_lock.c Note that the change to hl/src/H5LTanalyse.c is an artifact of clang-format. Tested serial threadsafe debug and production on jelly, and also regular serial / debug. On Windows builds, the new recursive R/W lock should not be built and we should use the existing global mutex -- however this is not tested at this time. * Updates CMake to build recursive RW lock test * Updates to allow building on Windows * Moves #if statements to better protect non-RW lock code * Adds configure and CMake options for the recursive RW locks * Committing clang-format changes * Updates RELEASE.txt and the build options * Renames H5TS RW lock things * Makes struct members platform independent Also removes _ptr from identifiers * Partial thread-safety RW locks platform independence * Committing clang-format changes * Pthreads side of things is platform-independent now * Formatted source * Added Windows equivalents for some Pthreads calls * Rename H5TS takedown call to destroy * Reorg of RW lock code * Committing clang-format changes * Changes to Pthreads code after development on Visual Studio * Moves stats macros to static inline functions and tidies memory allocs * Converts RW lock print stats call to use C99 formatting * Fixes typos * Formatted source * Updates the RELEASE.txt note to indicate no Win32 threads support Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
* Update URL in source file Copyright headers for web copy of COPYINGLarry Knox2021-02-201-1/+1
| | | | file - src and test directories.
* 1 12 Whitespace changes after clang-format run (#288)Allen Byrne2021-01-291-9/+9
| | | | | | | | | | | | | | | | | | | | | * OESS-98 fix tools test for plugins * sync fork * Merge of changes from dev * Move problem option to bottom of the list until fixed * HDFFV-11106 - fix parsing optional args * HDFFV-11106 add note * grammer fix * Whitespace after clang formatting * Undo format version 11 changes * Update check to working version
* Basic alignment with async branch (#115) (#137)Quincey Koziol2020-11-301-72/+135
| | | | | | | * Basic alignment with async branch - trivial changes to reduce clutter in overall diff. * Update minor error code to reflect change within library * Update the error output to match library
* Source formattedAllen Byrne2020-10-011-55/+43
|
* Sync with developDana Robinson2020-08-011-0/+1
|
* Whitespace cleanupAllen Byrne2020-05-131-15/+15
|
* Remove tongue-in-cheek credit for Rusty Shackleford and Dale Alvin Gribble.David Young2020-05-111-21/+0
| | | | | | | | | | | | Delete the comment questioning whether pthread_mutex_lock is allowed in a key destructor, since pthread_key_create(3) provides the answer: There is no notion of a destructor-safe function. If an application does not call pthread_exit() from a signal handler, or if it blocks any signal whose handler may call pthread_exit() while calling async-unsafe functions, all functions may be safely called from destructors. Delete redundant comment.
* Follow HDF5 conventions.David Young2020-05-111-30/+89
|
* Make sure that H5TS_thread_id() is available as either a function or a macro inDavid Young2020-05-111-9/+0
| | | | | | | | | all configurations. Previously it was neither declared nor defined in --disable-threadsafety builds. The compiler's warning got lost in the noise---I first saw the issue because my -Werror branch stopped compiling cold---and the tests still linked and ran.
* Use a naked pthread_self() call in the HDF5 thread wrappers.David Young2020-05-111-2/+2
|
* Change thread IDs to uint64_t from unsigned long, per Quincey's suggestion.David Young2020-05-061-8/+8
| | | | | Fix a typo in the H5TS_thread_init() comment and reword some ID properties.
* Replace pthread_self_ulong() with H5TS_thread_id(). The POSIX ThreadsDavid Young2020-05-061-0/+119
| | | | | implementation ought to be portable to any system that has POSIX Threads. On Windows, I use the same API call as before.
* Normalization with vol_integration (test code and H5Xtest.c)Dana Robinson2018-09-201-5/+1
|
* Merge branch 'develop' of https://bitbucket.hdfgroup.org/scm/hdffv/hdf5 into ↵Quincey Koziol2018-03-181-2/+1
|\ | | | | | | | | | | merge_func_enter_vol Plus initial steps toward merging API context push into FUNC_ENTER_API* macros
* | Add API context interface and use it throughout the library.Quincey Koziol2018-03-151-0/+16
|/
* Merge pull request #426 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:hdf5_1_10 to ↵Larry Knox2017-04-251-6/+4
| | | | | | | | | | hdf5_1_10 * commit '54957d37f5aa73912763dbb6e308555e863c43f4': Commit copyright header change for src/H5PLpkg.c which was added after running script to make changes. Add new files in release_docs to MANIFEST. Cimmit changes to Makefile.in(s) and H5PL.c that resulted from running autogen.sh. Merge pull request #407 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:hdf5_1_10_1 to hdf5_1_10_1 Change copyright headers to replace url referring to file to be removed and replace it with new url for COPYING file.
* [svn-r29842] Description:Quincey Koziol2016-04-301-1/+4
| | | | | | | | | Bring [appropriate portions of] r29811, 29813, 29826, 29830, 29831 from revise_chunks branch to the trunk. Tested on: MacOSX/64 10.11.4 (amazon) w/serial, parallel & production (h5committest forthcoming)
* [svn-r28761] Description:Quincey Koziol2016-01-011-9/+8
| | | | | | | | | | | | Clean up many mismatches between malloc/free and H5MM_malloc/H5MM_xfree in the library and tests (and use of H5free_memory and H5Dvlen_reclaim). Also make H5Ocopy use a private version of H5Lexists, which doesn't internally throw (and suppress) errors when an object (or the path to it) isn't found in the destination. Tested on: MacOSX/64 10.11.2 (amazon) w/serial & parallel (h5committest forthcoming)
* [svn-r27768] Description:Quincey Koziol2015-09-141-2/+3
| | | | | | | | | | | | | | | | | | | | | | Complete revamp of package initialization/shutdown mechanism in the library. Each package now has a single init/term routine. This new way should avoid packages being re-initialized during library shutdown and is also be _much_ more proactive about giving feedback for resource leaks internal to the library. Introduces a new "module" header file for packages in the library (e.g src/H5Fmodule.h) which sets up some necessary package configuration macros for the FUNC_ENTER/LEAVE macros. (The VFL drivers have their own slightly modified version of this header, src/H5FDdrvr_module.h) Also cleaned up a bunch of resources leaks all across the library and tests, along with addressing many warnings, as I encountered them. Tested on: MacOSX/64 10.10.5 (amazon) w/serial & parallel Linux/64 3.10.x (kituo) w/serial & parallel Linux/64 2.6.x (ostrich) w/serial
* [svn-r26649] squish warnings.Mohamad Chaarawi2015-03-301-1/+1
|
* [svn-r24961] Updates to Win32 thread-local storage cleanup when the ↵Dana Robinson2014-04-041-64/+161
| | | | | | | | | | | thread-safe library is built on Windows. Previously, thread-local storage was not cleaned up, causing resource leaks. Fixes HDFFV-8518, HDFFV-8699 As a part of these changes, the thread-safe + static library options are declared unsupported since the solution relies on DllMain. A solution for the static library is probably doable, but requires much more complicated surgery and has been deferred to HDF5 1.8.14. Tested on: 64-bit Windows 7 using VS 2012 (changes only affect Windows)
* [svn-r21816] Fix for JIRA HDFFV-7780Dana Robinson2011-12-061-2/+11
| | | | | | Updates Windows thread-safe code in H5TS.c to use _beginthread instead of CreateThread. Tested on 64-bit Windows 7 with Visual Studio 2010 using CMake. Both 32- and 64-bit builds were tested.
* [svn-r21366] JIRA HDFFV-2748 replace use of _WIN32 in source. Created new ↵Allen Byrne2011-09-061-19/+19
| | | | | | defines H5_HAVE_WIN32_API and H5_HAVE_VISUAL_STUDIO defines to use. These can be properly set during configurration. Tested: windows and local linux - reviewed internally
* [svn-r21353] HDFFV-4018: static function for windows and pthreadsAllen Byrne2011-09-011-0/+6
|
* [svn-r19384] Description:Quincey Koziol2010-09-151-46/+47
| | | | | | | | | | Correct an error I convinced Mike to introduce with the phread_once() code, :-( along with another one that wasn't my fault. Also, clean up warnings and restructure code in the thread-safe code a bit. Tested on: Mac OS X/32 10.6.4 (amazon) w/production + thread-safe (not a configuration that h5committest tests)
* [svn-r19367] Purpose:Mike McGreevy2010-09-101-27/+112
| | | | | | | | | | | | | | | | | | | Add windows threads support to HDF5. Description: Added calls to the windows threads library to the H5TS layer, and wrapped most calls to either pthreads or windows threads library with portable H5TS-style defines. Modified tests to use portable function definitions as well. This can be configured via CMake with the HDF5_ENABLE_THREADSAFE option, and should work on windows vista and later operating systems. Tested: h5committest, plus threadsafe with pthreads on jam and amani, and tested on a Windows Vista VM with threadsafe using windows threads.
* [svn-r15165] Purpose: Create new HDpthread_self and HDpthread_self_ulong macrosScott Wegner2008-06-061-2/+2
| | | | | | | | | Description: On Windows, the pthread_self function cannot be used to print the returned thread ID for debugging. Instead, we need a separate function, GetCurrentThreadId. To eliminate some Windows ifdef's in the code, we create two new function macros which can be used by all platforms. It is conditionally defined in H5win32defs.h, and globally in H5private.h. Tested: VS2005 w/ pthreads on WinXP kagiso w/ pthreads
* [svn-r14422] Description:Quincey Koziol2008-01-151-3/+2
| | | | | | | Clean up thread safety code a bit more... Tested on: Mac OS X/32 10.5.1 (amazon) w/threadsafe
* [svn-r14419] Description:Quincey Koziol2008-01-151-33/+21
| | | | | | | | Streamline threadsafety code to be simpler and reduce latency of holding locks. Tested on: Mac OS X/32 10.5.1 (amazon) w/threadsafe
* [svn-r13253] Updated all C and C++ style source code files with the THG ↵Albert Cheng2007-02-071-2/+3
| | | | | | | | | copyright notice. Tested platform: Kagiso only since it is only a comment block change. If it works in one machine, it should work in all, I hope. Still need to check the parallel build on copper.
* [svn-r12320] Purpose:Quincey Koziol2006-05-021-1/+1
| | | | | | | | | | code cleanup Description: Finish H5FS->H5CS internal API name changes... Platforms tested: FreeBSD 4.11 (sleipnir) w/ & w/o --enable-codestack
* [svn-r11733] Purpose:Quincey Koziol2005-11-161-25/+11
| | | | | | | | | | | | | | | | | | Code cleanup Description: Added some comments about the thread-specific memory for the error and function stacks. Changed H5close() to not use the function stack (since it causes it to be re-enabled after shutting it down) Changed thread-safe semaphore code to not use dynamicly allocated memory. Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 Too minor to require h5committest
* [svn-r11245] Purpose:Quincey Koziol2005-08-131-7/+7
| | | | | | | | | | | | | | | | | | | | Code cleanup Description: Trim trailing whitespace, which is making 'diff'ing the two branches difficult. Solution: Ran this script in each directory: foreach f (*.[ch] *.cpp) sed 's/[[:blank:]]*$//' $f > sed.out && mv sed.out $f end Platforms tested: FreeBSD 4.11 (sleipnir) Too minor to require h5committest
* [svn-r9727] Purpose:Quincey Koziol2004-12-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug Fix/Code Cleanup/Doc Cleanup/Optimization/Branch Sync :-) Description: Generally speaking, this is the "signed->unsigned" change to selections. However, in the process of merging code back, things got stickier and stickier until I ended up doing a big "sync the two branches up" operation. So... I brought back all the "infrastructure" fixes from the development branch to the release branch (which I think were actually making some improvement in performance) as well as fixed several bugs which had been fixed in one branch, but not the other. I've also tagged the repository before making this checkin with the label "before_signed_unsigned_changes". Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel & fphdf5 FreeBSD 4.10 (sleipnir) w/threadsafe FreeBSD 4.10 (sleipnir) w/backward compatibility Solaris 2.7 (arabica) w/"purify options" Solaris 2.8 (sol) w/FORTRAN & C++ AIX 5.x (copper) w/parallel & FORTRAN IRIX64 6.5 (modi4) w/FORTRAN Linux 2.4 (heping) w/FORTRAN & C++ Misc. update:
* [svn-r9208] Purpose: Bug fixRaymond Lu2004-09-041-3/+3
| | | | | | | | Description: A few items were left out when tried to restore the old Error API. There are also a few minor bug fixes. Platforms tested: arabica fuss h5committest.
* [svn-r8731] Purpose:Quincey Koziol2004-06-231-2/+0
| | | | | | | | | | | | | | | Code cleanup & minor optimization Description: Re-work the way interface initialization routines are specified in the library to avoid the overhead of checking for them in routines where there is no interface initialization routine. This cleans up warnings with gcc 3.4, reduces the library binary size a bit (about 2-3%) and should speedup the library's execution slightly. Platforms tested: FreeBSD 4.10 (sleipnir) w/gcc34 h5committest
* [svn-r7305] Purpose:Quincey Koziol2003-08-081-8/+6
| | | | | | | | | | | | Code cleanup Description: Clean up code a bit Chase new error API by including the error class in calls to H5E_push() Platforms tested: h5committested
* [svn-r7265] *** empty log message ***Raymond Lu2003-07-261-17/+10
|
* [svn-r7256] Purpose: gradual checkin for error apiRaymond Lu2003-07-231-1/+7
| | | | Platforms tested: RH 8(simple checkin)
* [svn-r6546] Purpose:Bill Wendling2003-03-311-11/+13
| | | | | | | | | | | | Update Description: Updated copyright statement in files which hadn't been updated yet. Platforms tested: Linux (Only comment change) Misc. update:
* [svn-r6383] Purpose:Quincey Koziol2003-02-071-37/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New feature for developers. Description: Added "function stack" tracing to library. This allows developers (there is no public API) to call H5FS_print within the library and get a listing of the functions traversed to reach that point in the library. Eventually, I may add support for reporting the parameters to each function also... Mainly for debugging parallel I/O programs, but I think it will come in handy in other cases also. The function stack tracking is controlled with a configure switch: --enable-funcstack, which defaults to enabled currently. When we branch for 1.6, we should change the default setting on the branch to be disabled. Also, added a destructor to the thread-specific keys when thread-safety is turned on in the library. Otherwise, they were leaking memory and causing difficult to debug errors in threaded programs (like the test/ttsafe test). Platforms tested: Tested h5committest {arabica (fortran), eirene (fortran, C++) modi4 (parallel, fortran)} FreeBSD 4.7 (sleipnir) w/thread-safety enabled. Misc. update: Updated MANIFEST with new files added (src/H5FS.c & src/H5FDprivate.h) Update release_docs/RELEASE with thread-safety bug fix.
* [svn-r3781] Purpose:Bill Wendling2001-04-051-3/+3
| | | | | | | | | | | | | | | | | | Update Description: Changed #include <hdf_file.h> construct to #include "hdf_file.h" so that the GNU compiler can more easily pick up the dependencies which it places in the .depend and Dependencies files. Also regenerated the Dependencies to go along with this. Platforms tested: Linux
* [svn-r3677] Purpose:Albert Cheng2001-03-201-4/+0
| | | | | | | | | | | | | Bug fix (sort of) Description: The RCSID string in H5public.h was causing the C++ code problem as it was included multiple times and C++ did not like multiple definitions of the same static variable. Solution: Since we don't really make use of the RCSID strings as we have not installed it in all source files, we decided to remove it. Platforms tested: eirene (linux), modi4 (IRIX64-64) both serial and parallel modes.
* [svn-r2348] The way the pthread_t object was being initialized wasn't ↵Bill Wendling2000-06-061-12/+25
| | | | | | | | | | | | correct for all platforms. Also, it's not entirely certain that a value of 0 isn't a valid thread ID. So, I changed the pthread_t object to be a pointer to pthread_t with the appropriate memory management this entails. Part of the validity of this approach rests on the fact that one can assign a variable which is a structure to another variable of the same type and all fields within will be copied appropriately...See! C *does* do some things correctly :-).
* [svn-r2286] Gave the threading functions return types (herr_t). pthreads' callsBill Wendling2000-05-191-80/+150
| | | | | | | | | | | | | return 0 on success and non-zero on failure. That's what happens with these calls. There was a problem compiling threading on Linux. The pthread_t type is not consistent among different implementations, so it cannot simply be assigned to NULL or tested against it. I initialize it by calling HDmemset(foo_thread, 0, sizeof(pthread_t)). To see if it's a "null" pthread, I created a special pthread_t object (assigned to only in the init phase and then only read...i.e., thread safe) and assigned it "null" as above. Then I use pthread_equal() to determine if the thread is null.
* [svn-r2276] Modifed thread-safety code to more closely align with rest of ↵Quincey Koziol2000-05-191-85/+113
| | | | | | HDF5 coding standards.
* [svn-r2264] Added Thread-safe feature. This is the phase 1 implementationChee-Wai Lee2000-05-181-0/+243
that all HDF5 API functions are protected by a mutex lock. Basically, serialized all API calls. To use it, use configure --enable-threadsafe --with-pthread