diff options
| author | Nalin Dahyabhai <nalin@redhat.com> | 2011-08-16 18:00:18 -0400 |
|---|---|---|
| committer | Nalin Dahyabhai <nalin@redhat.com> | 2011-08-16 18:00:18 -0400 |
| commit | 8af9fa08dc994c8a43ea7dc6254e10f5a0987fb7 (patch) | |
| tree | 744dee102e6f7c5f979ed116494a2b44add2c7b3 | |
| parent | c02febb57ba2130c3e68309b40644922ff361bdf (diff) | |
| download | slapi-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)
| -rw-r--r-- | configure.ac | 13 | ||||
| -rw-r--r-- | slapi-nis.spec | 4 | ||||
| -rw-r--r-- | src/wrap.c | 23 |
3 files changed, 37 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac index d91b16f..1981777 100644 --- a/configure.ac +++ b/configure.ac @@ -94,10 +94,17 @@ dirsrv) if test x$ac_cv_header_dirsrv_slapi_plugin_h = xno ; then AC_ERROR([<dirsrv/slapi-plugin.h> not found]) fi + AC_CHECK_DECLS(slapi_new_rwlock,,, + [AC_INCLUDES_DEFAULT + #include <dirsrv/slapi-plugin.h>]) CFLAGS="$saved_CFLAGS" LIBS="$saved_LIBS" thread_api=NSPR - thread_lock_api=POSIX + if test x$ac_cv_decl_slapi_new_rwlock = xyes ; then + thread_lock_api=SLAPI + else + thread_lock_api=POSIX + fi ;; *) RUNTIME_CFLAGS= @@ -126,7 +133,9 @@ else AC_MSG_ERROR([no threading API selected]) fi -if test $thread_lock_api = NSPR ; then +if test $thread_lock_api = SLAPI ; then + AC_DEFINE(USE_SLAPI_LOCKS,1,[Define to use SLAPI read/write locks.]) +elif test $thread_lock_api = NSPR ; then AC_DEFINE(USE_NSPR_LOCKS,1,[Define to use NSPR read/write locks.]) elif test $thread_lock_api = POSIX ; then AC_DEFINE(USE_PTHREAD_LOCKS,1,[Define to use POSIX read/write locks.]) diff --git a/slapi-nis.spec b/slapi-nis.spec index 746f8b8..a8f57f6 100644 --- a/slapi-nis.spec +++ b/slapi-nis.spec @@ -64,6 +64,10 @@ rm -rf $RPM_BUILD_ROOT %{_sbindir}/nisserver-plugin-defs %changelog +* Tue Aug 16 2011 Nalin Dahyabhai <nalin@redhat.com> - 0.27-1 +- when building for 389-ds, use Slapi_RWLocks if they appear to be available + (the rest of #730394/#730403) + * Fri Aug 12 2011 Nalin Dahyabhai <nalin@redhat.com> - 0.26-1 - when building for 389-ds, use libpthread's read-write locks instead of NSPR's (part of #730394/#730403) @@ -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 |
