summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@dahyabhai.net>2013-07-22 15:49:49 -0400
committerNalin Dahyabhai <nalin@dahyabhai.net>2013-08-07 14:46:03 -0400
commite8099d6a0396cdde592eb3e8059af1cb36506271 (patch)
treed912a6e234c897d2fd3fd8c701ec9ebfc09a5ed0 /src
parentae785b3ceaa596dc4f11df2f298f4b85bd9ba77b (diff)
downloadslapi-nis-e8099d6a0396cdde592eb3e8059af1cb36506271.tar.gz
slapi-nis-e8099d6a0396cdde592eb3e8059af1cb36506271.tar.xz
slapi-nis-e8099d6a0396cdde592eb3e8059af1cb36506271.zip
Remember that locking can fail
The SLAPI and pthread rwlock functions, unlike the NSPR versions, return result codes which can indicate failure. So don't throw them away.
Diffstat (limited to 'src')
-rw-r--r--src/map.c12
-rw-r--r--src/map.h6
-rw-r--r--src/wrap.c21
-rw-r--r--src/wrap.h6
4 files changed, 24 insertions, 21 deletions
diff --git a/src/map.c b/src/map.c
index 33543df..ad3ed3f 100644
--- a/src/map.c
+++ b/src/map.c
@@ -1218,20 +1218,20 @@ map_data_get_map_size(struct plugin_state *state,
return 0;
}
-void
+int
map_rdlock(void)
{
- wrap_rwlock_rdlock(map_data.lock);
+ return wrap_rwlock_rdlock(map_data.lock);
}
-void
+int
map_wrlock(void)
{
- wrap_rwlock_wrlock(map_data.lock);
+ return wrap_rwlock_wrlock(map_data.lock);
}
-void
+int
map_unlock(void)
{
- wrap_rwlock_unlock(map_data.lock);
+ return wrap_rwlock_unlock(map_data.lock);
}
diff --git a/src/map.h b/src/map.h
index 6bd7205..f5b0405 100644
--- a/src/map.h
+++ b/src/map.h
@@ -115,7 +115,7 @@ int map_data_get_domain_size(struct plugin_state *state,
const char *domain_name);
int map_data_get_map_size(struct plugin_state *state,
const char *domain_name, const char *map_name);
-void map_rdlock(void);
-void map_wrlock(void);
-void map_unlock(void);
+int map_rdlock(void);
+int map_wrlock(void);
+int map_unlock(void);
#endif
diff --git a/src/wrap.c b/src/wrap.c
index 629f697..c89638f 100644
--- a/src/wrap.c
+++ b/src/wrap.c
@@ -216,45 +216,48 @@ wrap_free_rwlock(struct wrapped_rwlock *rwlock)
free(rwlock);
}
-void
+int
wrap_rwlock_rdlock(struct wrapped_rwlock *rwlock)
{
#ifdef USE_SLAPI_LOCKS
- slapi_rwlock_rdlock(rwlock->rwlock);
+ return slapi_rwlock_rdlock(rwlock->rwlock);
#endif
#ifdef USE_PTHREAD_LOCKS
- pthread_rwlock_rdlock(&rwlock->rwlock);
+ return pthread_rwlock_rdlock(&rwlock->rwlock);
#endif
#ifdef USE_NSPR_LOCKS
PR_RWLock_Rlock(rwlock->rwlock);
+ return 0;
#endif
}
-void
+int
wrap_rwlock_wrlock(struct wrapped_rwlock *rwlock)
{
#ifdef USE_SLAPI_LOCKS
- slapi_rwlock_wrlock(rwlock->rwlock);
+ return slapi_rwlock_wrlock(rwlock->rwlock);
#endif
#ifdef USE_PTHREAD_LOCKS
- pthread_rwlock_wrlock(&rwlock->rwlock);
+ return pthread_rwlock_wrlock(&rwlock->rwlock);
#endif
#ifdef USE_NSPR_LOCKS
PR_RWLock_Wlock(rwlock->rwlock);
+ return 0;
#endif
}
-void
+int
wrap_rwlock_unlock(struct wrapped_rwlock *rwlock)
{
#ifdef USE_SLAPI_LOCKS
- slapi_rwlock_unlock(rwlock->rwlock);
+ return slapi_rwlock_unlock(rwlock->rwlock);
#endif
#ifdef USE_PTHREAD_LOCKS
- pthread_rwlock_unlock(&rwlock->rwlock);
+ return pthread_rwlock_unlock(&rwlock->rwlock);
#endif
#ifdef USE_NSPR_LOCKS
PR_RWLock_Unlock(rwlock->rwlock);
+ return 0;
#endif
}
diff --git a/src/wrap.h b/src/wrap.h
index 7fd85e7..71bd326 100644
--- a/src/wrap.h
+++ b/src/wrap.h
@@ -33,9 +33,9 @@ int wrap_thread_stopfd(struct wrapped_thread *t);
struct wrapped_rwlock *wrap_new_rwlock(void);
void wrap_free_rwlock(struct wrapped_rwlock *rwlock);
-void wrap_rwlock_rdlock(struct wrapped_rwlock *rwlock);
-void wrap_rwlock_wrlock(struct wrapped_rwlock *rwlock);
-void wrap_rwlock_unlock(struct wrapped_rwlock *rwlock);
+int wrap_rwlock_rdlock(struct wrapped_rwlock *rwlock);
+int wrap_rwlock_wrlock(struct wrapped_rwlock *rwlock);
+int wrap_rwlock_unlock(struct wrapped_rwlock *rwlock);
Slapi_PBlock *wrap_pblock_new(Slapi_PBlock *parent);
int wrap_search_internal_get_entry(Slapi_PBlock *pb,