summaryrefslogtreecommitdiffstats
path: root/libelf/common.h
diff options
context:
space:
mode:
authorUlrich Drepper <[email protected]>2008-08-16 03:09:13 +0000
committerUlrich Drepper <[email protected]>2008-08-16 03:09:13 +0000
commitd56e232fb8f8cd97a336ed612c89145ec121f785 (patch)
tree5bd8fe5f1f73bb258eecd2cd4dae5c30a33a016e /libelf/common.h
parent1d8bb25cac06b5af57f8733e5ea7a068a79edfe0 (diff)
propagate from branch 'com.redhat.elfutils.pmachata.threads' (head 8bd3bc10eb015c96f7bafcc6a22c973620b57dd8)
to branch 'com.redhat.elfutils' (head c5a11b6b3329382f1b5ffd0020f0d93c64176f20)
Diffstat (limited to 'libelf/common.h')
-rw-r--r--libelf/common.h31
1 files changed, 29 insertions, 2 deletions
diff --git a/libelf/common.h b/libelf/common.h
index 757188c1..c00bfbc5 100644
--- a/libelf/common.h
+++ b/libelf/common.h
@@ -57,6 +57,7 @@
#include <stdlib.h>
#include <string.h>
+#include "libelfP.h"
static inline Elf_Kind
__attribute__ ((unused))
@@ -117,7 +118,7 @@ static void
__attribute__ ((unused))
libelf_acquire_all (Elf *elf)
{
- rwlock_wrlock (elf->lock);
+ RWLOCK_WRLOCK (elf->lock);
if (elf->kind == ELF_K_AR)
{
@@ -149,7 +150,33 @@ libelf_release_all (Elf *elf)
}
}
- rwlock_unlock (elf->lock);
+ RWLOCK_UNLOCK (elf->lock);
+}
+
+/* Convert given lock LOCK with lock state FROM to lock state
+ LS_WRLOCKED. */
+static void
+__attribute__ ((unused))
+rwlock_to_wrlock(lockstat_t from, rwlock_define (,*lock))
+{
+ if (from == LS_WRLOCKED)
+ return;
+ if (from == LS_RDLOCKED)
+ RWLOCK_UNLOCK (*lock);
+ RWLOCK_WRLOCK (*lock);
+}
+
+/* Convert given lock LOCK with lock state LS_WRLOCKED to lock state
+ TO. */
+static void
+__attribute__ ((unused))
+rwlock_from_wrlock(lockstat_t to, rwlock_define (,*lock))
+{
+ if (to == LS_WRLOCKED)
+ return;
+ RWLOCK_UNLOCK (*lock);
+ if (to == LS_RDLOCKED)
+ RWLOCK_RDLOCK (*lock);
}