summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorScott Wegner <swegner@hdfgroup.org>2008-06-02 20:39:52 (GMT)
committerScott Wegner <swegner@hdfgroup.org>2008-06-02 20:39:52 (GMT)
commitd83709c4e6d274ea83b2b0e865d776c244727a38 (patch)
treea0780c07c794081b014e5aecd881c247fac05263 /src
parentcfb75e1f7f1cc084ca63ef9c63bc2a7779a384d9 (diff)
downloadhdf5-d83709c4e6d274ea83b2b0e865d776c244727a38.zip
hdf5-d83709c4e6d274ea83b2b0e865d776c244727a38.tar.gz
hdf5-d83709c4e6d274ea83b2b0e865d776c244727a38.tar.bz2
[svn-r15128] Purpose: Make Windows threadsafe debug message more useful
Description: On Linux-like systems, we can get the ID of the current thread through a pthread_self. However on Windows, the return cannot be cast as a threadID, so we simply couldn't get the ID. Previously we simply gave up and printed a message that we couldn't get an ID. Instead, though, we can use the Windows-specific call to GetCurrentThreadId(), which achieves the same goal. This way we can provide better debug output with threadsafe features. Tested: VS2005 on WinXP VS.NET on WinXP (other platforms not tested because change is within _WIN32 ifdef)
Diffstat (limited to 'src')
-rw-r--r--src/H5Eint.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/H5Eint.c b/src/H5Eint.c
index 66fba91..34290a4 100644
--- a/src/H5Eint.c
+++ b/src/H5Eint.c
@@ -276,7 +276,9 @@ H5E_walk1_cb(int n, H5E_error1_t *err_desc, void *client_data)
} /* end block */
#elif defined(H5_HAVE_THREADSAFE)
#ifdef _WIN32
- fprintf(stream, "some thread: no way to know the thread number from pthread on windows");
+ /* use GetCurrentThreadId because pthread_self return cannot be cast */
+ /* as an unsigned long on Windows */
+ fprintf(stream, "thread %lu", (unsigned long)GetCurrentThreadId());
#else
fprintf(stream, "thread %lu", (unsigned long)pthread_self());
#endif
@@ -396,7 +398,9 @@ H5E_walk2_cb(unsigned n, const H5E_error2_t *err_desc, void *client_data)
} /* end block */
#elif defined(H5_HAVE_THREADSAFE)
#ifdef _WIN32
- fprintf(stream, "some thread: no way to know the thread number from pthread on windows");
+ /* use GetCurrentThreadId because pthread_self return cannot be cast */
+ /* as an unsigned long on Windows */
+ fprintf(stream, "thread %lu", (unsigned long)GetCurrentThreadId());
#else
fprintf(stream, "thread %lu", (unsigned long)pthread_self());
#endif