summaryrefslogtreecommitdiffstats
path: root/src/H5TSprivate.h
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2014-04-04 20:51:30 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2014-04-04 20:51:30 (GMT)
commitb17ef126a75779f00ee4fef70a2b590b2c19fb4e (patch)
tree846887128b92979fd6e1c3cd84bb6a5c445e1068 /src/H5TSprivate.h
parent79a891c2417859de411a36e25203499f1f0d4280 (diff)
downloadhdf5-b17ef126a75779f00ee4fef70a2b590b2c19fb4e.zip
hdf5-b17ef126a75779f00ee4fef70a2b590b2c19fb4e.tar.gz
hdf5-b17ef126a75779f00ee4fef70a2b590b2c19fb4e.tar.bz2
[svn-r24961] Updates to Win32 thread-local storage cleanup when the 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)
Diffstat (limited to 'src/H5TSprivate.h')
-rw-r--r--src/H5TSprivate.h13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/H5TSprivate.h b/src/H5TSprivate.h
index 7f55f4f..cc22f96 100644
--- a/src/H5TSprivate.h
+++ b/src/H5TSprivate.h
@@ -51,6 +51,7 @@ typedef INIT_ONCE H5TS_once_t;
/* not used on windows side, but need to be defined to something */
#define H5TS_SCOPE_SYSTEM 0
#define H5TS_SCOPE_PROCESS 0
+#define H5TS_CALL_CONV WINAPI
/* Functions */
#define H5TS_get_thread_local_value(key) TlsGetValue( key )
@@ -63,8 +64,13 @@ typedef INIT_ONCE H5TS_once_t;
#define H5TS_mutex_lock_simple(mutex) EnterCriticalSection(mutex)
#define H5TS_mutex_unlock_simple(mutex) LeaveCriticalSection(mutex)
-H5_DLL BOOL CALLBACK
-H5TS_win32_first_thread_init(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *lpContex);
+/* Functions called from DllMain */
+H5_DLL BOOL CALLBACK H5TS_win32_process_enter(PINIT_ONCE InitOnce, PVOID Parameter, PVOID *lpContex);
+H5_DLL void H5TS_win32_process_exit(void);
+H5_DLL herr_t H5TS_win32_thread_enter(void);
+H5_DLL herr_t H5TS_win32_thread_exit(void);
+
+
#else /* H5_HAVE_WIN_THREADS */
@@ -86,6 +92,7 @@ typedef pthread_once_t H5TS_once_t;
/* Scope Definitions */
#define H5TS_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM
#define H5TS_SCOPE_PROCESS PTHREAD_SCOPE_PROCESS
+#define H5TS_CALL_CONV /* unused - Windows only */
/* Functions */
#define H5TS_get_thread_local_value(key) pthread_getspecific( key )
@@ -117,8 +124,6 @@ H5_DLL herr_t H5TS_cancel_count_inc(void);
H5_DLL herr_t H5TS_cancel_count_dec(void);
H5_DLL H5TS_thread_t H5TS_create_thread(void * func, H5TS_attr_t * attr, void *udata);
-
-
#if defined c_plusplus || defined __cplusplus
}
#endif /* c_plusplus || __cplusplus */