diff options
| author | Ulrich Drepper <[email protected]> | 2008-08-16 03:09:13 +0000 |
|---|---|---|
| committer | Ulrich Drepper <[email protected]> | 2008-08-16 03:09:13 +0000 |
| commit | d56e232fb8f8cd97a336ed612c89145ec121f785 (patch) | |
| tree | 5bd8fe5f1f73bb258eecd2cd4dae5c30a33a016e /libelf/common.h | |
| parent | 1d8bb25cac06b5af57f8733e5ea7a068a79edfe0 (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.h | 31 |
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); } |
