POSIX says never to compare pthread_t directly

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16501 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Mathieu Rene 2010-01-24 19:23:58 +00:00
parent 4f39fe92ab
commit 62341a9526
3 changed files with 17 additions and 4 deletions

View File

@ -50,6 +50,12 @@ typedef pthread_t switch_thread_id_t;
SWITCH_DECLARE(switch_thread_id_t) switch_thread_self(void); SWITCH_DECLARE(switch_thread_id_t) switch_thread_self(void);
/*! \brief Compare two thread ids
* \param tid1 1st Thread ID to compare
* \param tid2 2nd Thread ID to compare
*/
SWITCH_DECLARE(int) switch_thread_equal(switch_thread_id_t tid1, switch_thread_id_t tid2);
/* /*
The pieces of apr we allow ppl to pass around between modules we typedef into our namespace and wrap all the functions The pieces of apr we allow ppl to pass around between modules we typedef into our namespace and wrap all the functions

View File

@ -79,6 +79,16 @@ SWITCH_DECLARE(switch_thread_id_t) switch_thread_self(void)
#endif #endif
} }
SWITCH_DECLARE(int) switch_thread_equal(switch_thread_id_t tid1, switch_thread_id_t tid2)
{
#ifdef WIN32
return (tid1 == tid2);
#else
return apr_os_thread_equal(tid1, tid2);
#endif
}
SWITCH_DECLARE(void) switch_pool_clear(switch_memory_pool_t *p) SWITCH_DECLARE(void) switch_pool_clear(switch_memory_pool_t *p)
{ {
apr_pool_clear(p); apr_pool_clear(p);

View File

@ -1143,10 +1143,7 @@ SWITCH_DECLARE(void) switch_core_session_disable_heartbeat(switch_core_session_t
SWITCH_DECLARE(switch_bool_t) switch_core_session_in_thread(switch_core_session_t *session) SWITCH_DECLARE(switch_bool_t) switch_core_session_in_thread(switch_core_session_t *session)
{ {
if (switch_thread_self() == session->thread_id) { return switch_thread_equal(switch_thread_self(), session->thread_id) ? SWITCH_TRUE : SWITCH_FALSE;
return SWITCH_TRUE;
}
return SWITCH_FALSE;
} }
static void *SWITCH_THREAD_FUNC switch_core_session_thread(switch_thread_t *thread, void *obj) static void *SWITCH_THREAD_FUNC switch_core_session_thread(switch_thread_t *thread, void *obj)