summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorScott Wegner <swegner@hdfgroup.org>2008-06-02 20:39:02 (GMT)
committerScott Wegner <swegner@hdfgroup.org>2008-06-02 20:39:02 (GMT)
commit0eb9e1ac433586afe270e8ee34127808e26bf10e (patch)
tree8c2762c3ba7afa46449615051b2f341ed1130561 /src
parent73fe71235694756962867bd2491d86dac82cad93 (diff)
downloadhdf5-0eb9e1ac433586afe270e8ee34127808e26bf10e.zip
hdf5-0eb9e1ac433586afe270e8ee34127808e26bf10e.tar.gz
hdf5-0eb9e1ac433586afe270e8ee34127808e26bf10e.tar.bz2
[svn-r15127] 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