summaryrefslogtreecommitdiffstats
path: root/src/wrap.c
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@redhat.com>2011-08-16 18:00:18 -0400
committerNalin Dahyabhai <nalin@redhat.com>2011-08-16 18:00:18 -0400
commit8af9fa08dc994c8a43ea7dc6254e10f5a0987fb7 (patch)
tree744dee102e6f7c5f979ed116494a2b44add2c7b3 /src/wrap.c
parentc02febb57ba2130c3e68309b40644922ff361bdf (diff)
downloadslapi-nis-8af9fa08dc994c8a43ea7dc6254e10f5a0987fb7.tar.gz
slapi-nis-8af9fa08dc994c8a43ea7dc6254e10f5a0987fb7.tar.xz
slapi-nis-8af9fa08dc994c8a43ea7dc6254e10f5a0987fb7.zip
- when building for 389-ds, use Slapi_RWLocks if they appear to be available (the rest of #730394/#730403)
Diffstat (limited to 'src/wrap.c')
-rw-r--r--src/wrap.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/wrap.c b/src/wrap.c
index ce15c8a..8ba56d2 100644
--- a/src/wrap.c
+++ b/src/wrap.c
@@ -68,7 +68,9 @@ struct wrapped_thread {
};
struct wrapped_rwlock {
-#if defined(USE_PTHREAD_LOCKS)
+#if defined(USE_SLAPI_LOCKS)
+ Slapi_RWLock *rwlock;
+#elif defined(USE_PTHREAD_LOCKS)
pthread_rwlock_t rwlock;
#elif defined(USE_NSPR_LOCKS)
PRRWLock *rwlock;
@@ -175,6 +177,13 @@ wrap_new_rwlock(void)
if (rwlock == NULL) {
return NULL;
}
+#ifdef USE_SLAPI_LOCKS
+ rwlock->rwlock = slapi_new_rwlock();
+ if (rwlock->rwlock == NULL) {
+ free(rwlock);
+ return NULL;
+ }
+#endif
#ifdef USE_PTHREAD_LOCKS
if (pthread_rwlock_init(&rwlock->rwlock, NULL) != 0) {
free(rwlock);
@@ -195,6 +204,9 @@ wrap_new_rwlock(void)
void
wrap_free_rwlock(struct wrapped_rwlock *rwlock)
{
+#ifdef USE_SLAPI_LOCKS
+ slapi_destroy_rwlock(rwlock->rwlock);
+#endif
#ifdef USE_PTHREAD_LOCKS
pthread_rwlock_destroy(&rwlock->rwlock);
#endif
@@ -207,6 +219,9 @@ wrap_free_rwlock(struct wrapped_rwlock *rwlock)
void
wrap_rwlock_rdlock(struct wrapped_rwlock *rwlock)
{
+#ifdef USE_SLAPI_LOCKS
+ slapi_rwlock_rdlock(rwlock->rwlock);
+#endif
#ifdef USE_PTHREAD_LOCKS
pthread_rwlock_rdlock(&rwlock->rwlock);
#endif
@@ -218,6 +233,9 @@ wrap_rwlock_rdlock(struct wrapped_rwlock *rwlock)
void
wrap_rwlock_wrlock(struct wrapped_rwlock *rwlock)
{
+#ifdef USE_SLAPI_LOCKS
+ slapi_rwlock_wrlock(rwlock->rwlock);
+#endif
#ifdef USE_PTHREAD_LOCKS
pthread_rwlock_wrlock(&rwlock->rwlock);
#endif
@@ -229,6 +247,9 @@ wrap_rwlock_wrlock(struct wrapped_rwlock *rwlock)
void
wrap_rwlock_unlock(struct wrapped_rwlock *rwlock)
{
+#ifdef USE_SLAPI_LOCKS
+ slapi_rwlock_unlock(rwlock->rwlock);
+#endif
#ifdef USE_PTHREAD_LOCKS
pthread_rwlock_unlock(&rwlock->rwlock);
#endif