X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Funix%2Fsilcunixthread.c;h=bd551c2990ac4e5a449c7e38ec686c4f80aa705a;hb=52e57c880aba9c5e89f59d962eb9af75670b76e0;hp=6e85dd743981702723a8f34e7a006d3eb8ef73d4;hpb=0f95f4926c8579fe3cc36c9e68f36b67170a0c8e;p=silc.git diff --git a/lib/silcutil/unix/silcunixthread.c b/lib/silcutil/unix/silcunixthread.c index 6e85dd74..bd551c29 100644 --- a/lib/silcutil/unix/silcunixthread.c +++ b/lib/silcutil/unix/silcunixthread.c @@ -97,6 +97,14 @@ SilcBool silc_thread_wait(SilcThread thread, void **exit_value) #endif } +void silc_thread_yield(void) +{ +#ifdef SILC_THREADS +#ifdef HAVE_SCHED_YIELD + sched_yield(); +#endif /* HAVE_SCHED_YIELD */ +#endif /* SILC_THREADS */ +} /***************************** SILC Mutex API *******************************/ @@ -136,8 +144,7 @@ void silc_mutex_lock(SilcMutex mutex) { #ifdef SILC_THREADS if (mutex) { - if (pthread_mutex_lock(&mutex->mutex)) - SILC_ASSERT(FALSE); + SILC_VERIFY(pthread_mutex_lock(&mutex->mutex) == 0); mutex->locked = TRUE; } #endif /* SILC_THREADS */ @@ -147,8 +154,7 @@ void silc_mutex_unlock(SilcMutex mutex) { #ifdef SILC_THREADS if (mutex) { - if (pthread_mutex_unlock(&mutex->mutex)) - SILC_ASSERT(FALSE); + SILC_VERIFY(pthread_mutex_unlock(&mutex->mutex) == 0); mutex->locked = FALSE; } #endif /* SILC_THREADS */ @@ -158,7 +164,7 @@ void silc_mutex_assert_locked(SilcMutex mutex) { #ifdef SILC_THREADS if (mutex) - SILC_ASSERT(mutex->locked); + SILC_VERIFY(mutex->locked); #endif /* SILC_THREADS */ } @@ -208,7 +214,7 @@ void silc_rwlock_wrlock(SilcRwLock rwlock) { #ifdef SILC_THREADS if (rwlock) - pthread_rwlock_wrlock(&rwlock->rwlock); + SILC_VERIFY(pthread_rwlock_wrlock(&rwlock->rwlock) == 0); #endif /* SILC_THREADS */ } @@ -216,7 +222,7 @@ void silc_rwlock_unlock(SilcRwLock rwlock) { #ifdef SILC_THREADS if (rwlock) - pthread_rwlock_unlock(&rwlock->rwlock); + SILC_VERIFY(pthread_rwlock_unlock(&rwlock->rwlock) == 0); #endif /* SILC_THREADS */ }