diff options
author | Scott Wegner <swegner@hdfgroup.org> | 2008-06-02 20:39:02 (GMT) |
---|---|---|
committer | Scott Wegner <swegner@hdfgroup.org> | 2008-06-02 20:39:02 (GMT) |
commit | 0eb9e1ac433586afe270e8ee34127808e26bf10e (patch) | |
tree | 8c2762c3ba7afa46449615051b2f341ed1130561 /src | |
parent | 73fe71235694756962867bd2491d86dac82cad93 (diff) | |
download | hdf5-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.c | 8 |
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 |