56typedef struct rw_semaphore {
65#define RWSEM_INITIALIZER { 0, MUTEX_INITIALIZER, MUTEX_INITIALIZER }
Various common macros used throughout the codebase.
static __nonnull_all int rwsem_read_lock(rw_semaphore_t *s)
Lock a reader/writer semaphore for reading.
Definition rwsem.h:117
int rwsem_write_unlock(rw_semaphore_t *s) __nonnull_all
Unlock a reader/writer semaphore from a write lock.
int rwsem_read_trylock(rw_semaphore_t *s) __nonnull_all
Attempt to lock a reader/writer semaphore for reading.
static __nonnull_all int rwsem_read_upgrade(rw_semaphore_t *s)
Upgrade a thread from reader status to writer status.
Definition rwsem.h:311
int rwsem_unlock(rw_semaphore_t *s) __nonnull_all
Unlock a reader/writer semaphore.
int rwsem_read_upgrade_timed(rw_semaphore_t *s, unsigned int timeout) __nonnull_all
Upgrade a thread from reader status to writer status (with a timeout).
int rwsem_write_trylock(rw_semaphore_t *s) __nonnull_all
Attempt to lock a reader/writer semaphore for writing.
int rwsem_read_tryupgrade(rw_semaphore_t *s) __nonnull_all
Attempt to upgrade a thread from reader status to writer status.
static __nonnull_all int rwsem_write_lock(rw_semaphore_t *s)
Lock a reader/writer semaphore for writing.
Definition rwsem.h:167
int rwsem_write_lock_irqsafe(rw_semaphore_t *s) __nonnull_all
Lock a reader/writer semaphore for writing.
int rwsem_read_unlock(rw_semaphore_t *s) __nonnull_all
Unlock a reader/writer semaphore from a read lock.
int rwsem_read_count(const rw_semaphore_t *s) __nonnull_all
Read the reader count on the reader/writer semaphore.
int rwsem_read_lock_timed(rw_semaphore_t *s, unsigned int timeout) __nonnull_all
Lock a reader/writer semaphore for reading (with a timeout).
int rwsem_read_lock_irqsafe(rw_semaphore_t *s) __nonnull_all
Lock a reader/writer semaphore for reading.
int rwsem_write_locked(const rw_semaphore_t *s) __nonnull_all
Read the state of the writer lock on the reader/writer semaphore.
int rwsem_init(rw_semaphore_t *s) __nonnull_all
Initialize a reader/writer semaphore.
int rwsem_destroy(rw_semaphore_t *s) __nonnull_all
Destroy a reader/writer semaphore.
int rwsem_write_lock_timed(rw_semaphore_t *s, unsigned int timeout) __nonnull_all
Lock a reader/writer semaphore for writing (with a timeout).
rw_semaphore_t s
Definition rwsem_test.c:25
Mutual exclusion lock type.
Definition mutex.h:56
Reader/writer semaphore structure.
Definition rwsem.h:56
int read_count
The number of readers that are currently holding the lock.
Definition rwsem.h:58
mutex_t read_lock
Definition rwsem.h:61
mutex_t write_lock
Definition rwsem.h:60