diff options
author | Scott Wegner <swegner@hdfgroup.org> | 2008-06-02 20:39:52 (GMT) |
---|---|---|
committer | Scott Wegner <swegner@hdfgroup.org> | 2008-06-02 20:39:52 (GMT) |
commit | d83709c4e6d274ea83b2b0e865d776c244727a38 (patch) | |
tree | a0780c07c794081b014e5aecd881c247fac05263 /src | |
parent | cfb75e1f7f1cc084ca63ef9c63bc2a7779a384d9 (diff) | |
download | hdf5-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.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 |