X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fbeos%2Fsilcbeosmutex.c;h=2e1cef0cb7f6818518b419905b16fea58b6236a0;hb=40f8443d8d3a6577336ee66d18e04d9ac4d956bb;hp=74544928168df26ecbfb9c3f21c3ece9fc5507c6;hpb=6b773ff581867c2817c53bca0cff3f92d433c69b;p=silc.git diff --git a/lib/silcutil/beos/silcbeosmutex.c b/lib/silcutil/beos/silcbeosmutex.c index 74544928..2e1cef0c 100644 --- a/lib/silcutil/beos/silcbeosmutex.c +++ b/lib/silcutil/beos/silcbeosmutex.c @@ -16,19 +16,19 @@ GNU General Public License for more details. */ +/* I used Apache's APR code as a reference here. */ /* $Id$ */ -#include "silcincludes.h" +#include "silc.h" #ifdef SILC_THREADS /* SILC Mutex structure */ struct SilcMutexStruct { - int sema_count; sem_id sema; }; -bool silc_mutex_alloc(SilcMutex *mutex) +SilcBool silc_mutex_alloc(SilcMutex *mutex) { int ret; @@ -42,7 +42,6 @@ bool silc_mutex_alloc(SilcMutex *mutex) return FALSE; } - (*mutex)->sema_count = 0; (*mutex)->sema = ret; return TRUE; @@ -56,18 +55,14 @@ void silc_mutex_free(SilcMutex mutex) void silc_mutex_lock(SilcMutex mutex) { - if (atomic_add(&mutex->sema_count, 1) > 0) { - if (acquire_sem(mutex->sema) < B_NO_ERROR) - assert(FALSE); - } + if (acquire_sem(mutex->sema) < B_NO_ERROR) + assert(FALSE); } void silc_mutex_unlock(SilcMutex mutex) { - if (atomic_add(&mutes->sema_count, -1) > 1) { - if (release_sem(mutex->sema) < B_NO_ERROR) - assert(FALSE); - } + if (release_sem(mutex->sema) < B_NO_ERROR) + assert(FALSE); } #endif /* SILC_THREADS */