summaryrefslogtreecommitdiffstats
path: root/src/wrap.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@dahyabhai.net>2011-08-12 15:31:53 -0400
committerNalin Dahyabhai <nalin@dahyabhai.net>2011-08-12 15:31:53 -0400
commit578a55b7374ad7e68da527f4035aeac967cc8906 (patch)
treef9f90a55f2b45fa85207b691840587771aab8c94 /src/wrap.c
parente1319619681dbef893866393c010261ea0256f9e (diff)
downloadslapi-nis-578a55b7374ad7e68da527f4035aeac967cc8906.tar.gz
slapi-nis-578a55b7374ad7e68da527f4035aeac967cc8906.tar.xz
slapi-nis-578a55b7374ad7e68da527f4035aeac967cc8906.zip
- separate which thread creation/manipulation/destruction API we use
from which rwlock creation/manipulation/destruction API we use
Diffstat (limited to 'src/wrap.c')
-rw-r--r--src/wrap.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/wrap.c b/src/wrap.c
index a7a64ff..ce15c8a 100644
--- a/src/wrap.c
+++ b/src/wrap.c
@@ -39,7 +39,11 @@
#include <slapi-plugin.h>
#endif
-#ifdef USE_PTHREADS
+#if defined(USE_NSPR_THREADS) || defined(USE_NSPR_LOCKS)
+#include <nspr.h>
+#endif
+
+#if defined(USE_PTHREADS) || defined(USE_PTHREAD_LOCKS)
#include <pthread.h>
#endif
@@ -64,12 +68,12 @@ struct wrapped_thread {
};
struct wrapped_rwlock {
-#if defined(USE_PTHREADS)
+#if defined(USE_PTHREAD_LOCKS)
pthread_rwlock_t rwlock;
-#elif defined(USE_NSPR_THREADS)
+#elif defined(USE_NSPR_LOCKS)
PRRWLock *rwlock;
#else
-#error "Unknown threading model!"
+#error "Unknown thread-safe locking model!"
#endif
};
@@ -171,13 +175,13 @@ wrap_new_rwlock(void)
if (rwlock == NULL) {
return NULL;
}
-#ifdef USE_PTHREADS
+#ifdef USE_PTHREAD_LOCKS
if (pthread_rwlock_init(&rwlock->rwlock, NULL) != 0) {
free(rwlock);
return NULL;
}
#endif
-#ifdef USE_NSPR_THREADS
+#ifdef USE_NSPR_LOCKS
rwlock->rwlock = PR_NewRWLock(PR_RWLOCK_RANK_NONE,
PACKAGE_NAME "-rw-lock");
if (rwlock->rwlock == NULL) {
@@ -191,10 +195,10 @@ wrap_new_rwlock(void)
void
wrap_free_rwlock(struct wrapped_rwlock *rwlock)
{
-#ifdef USE_PTHREADS
+#ifdef USE_PTHREAD_LOCKS
pthread_rwlock_destroy(&rwlock->rwlock);
#endif
-#ifdef USE_NSPR_THREADS
+#ifdef USE_NSPR_LOCKS
PR_DestroyRWLock(rwlock->rwlock);
#endif
free(rwlock);
@@ -203,10 +207,10 @@ wrap_free_rwlock(struct wrapped_rwlock *rwlock)
void
wrap_rwlock_rdlock(struct wrapped_rwlock *rwlock)
{
-#ifdef USE_PTHREADS
+#ifdef USE_PTHREAD_LOCKS
pthread_rwlock_rdlock(&rwlock->rwlock);
#endif
-#ifdef USE_NSPR_THREADS
+#ifdef USE_NSPR_LOCKS
PR_RWLock_Rlock(rwlock->rwlock);
#endif
}
@@ -214,10 +218,10 @@ wrap_rwlock_rdlock(struct wrapped_rwlock *rwlock)
void
wrap_rwlock_wrlock(struct wrapped_rwlock *rwlock)
{
-#ifdef USE_PTHREADS
+#ifdef USE_PTHREAD_LOCKS
pthread_rwlock_wrlock(&rwlock->rwlock);
#endif
-#ifdef USE_NSPR_THREADS
+#ifdef USE_NSPR_LOCKS
PR_RWLock_Wlock(rwlock->rwlock);
#endif
}
@@ -225,10 +229,10 @@ wrap_rwlock_wrlock(struct wrapped_rwlock *rwlock)
void
wrap_rwlock_unlock(struct wrapped_rwlock *rwlock)
{
-#ifdef USE_PTHREADS
+#ifdef USE_PTHREAD_LOCKS
pthread_rwlock_unlock(&rwlock->rwlock);
#endif
-#ifdef USE_NSPR_THREADS
+#ifdef USE_NSPR_LOCKS
PR_RWLock_Unlock(rwlock->rwlock);
#endif
}