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;
return FALSE;
}
- (*mutex)->sema_count = 0;
(*mutex)->sema = ret;
return TRUE;
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 */