diff options
author | Chris Robinson <[email protected]> | 2017-04-14 18:15:56 -0700 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2017-04-14 18:15:56 -0700 |
commit | afb59e7f98f40cde77c150414a8a5bd13f40781a (patch) | |
tree | 45ff03dd2eaec63563ff518a035967675b47bd55 /common/rwlock.h | |
parent | c5310d2e953c44eb33aa9bfa913e62adf11f20fd (diff) |
Move internal headers out of the include directory
Diffstat (limited to 'common/rwlock.h')
-rw-r--r-- | common/rwlock.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/common/rwlock.h b/common/rwlock.h new file mode 100644 index 00000000..8e36fa1a --- /dev/null +++ b/common/rwlock.h @@ -0,0 +1,31 @@ +#ifndef AL_RWLOCK_H +#define AL_RWLOCK_H + +#include "bool.h" +#include "atomic.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + RefCount read_count; + RefCount write_count; + ATOMIC_FLAG read_lock; + ATOMIC_FLAG read_entry_lock; + ATOMIC_FLAG write_lock; +} RWLock; +#define RWLOCK_STATIC_INITIALIZE { ATOMIC_INIT_STATIC(0), ATOMIC_INIT_STATIC(0), \ + ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT, ATOMIC_FLAG_INIT } + +void RWLockInit(RWLock *lock); +void ReadLock(RWLock *lock); +void ReadUnlock(RWLock *lock); +void WriteLock(RWLock *lock); +void WriteUnlock(RWLock *lock); + +#ifdef __cplusplus +} +#endif + +#endif /* AL_RWLOCK_H */ |