/** @file rwlock_type.h * @brief This file defines the type for reader/writer locks. * @author Meng Jun Zheng (mzheng) */ #ifndef _RWLOCK_TYPE_H #define _RWLOCK_TYPE_H #include #include #define RWLOCK_SUCCESS 0 #define RWLOCK_ERROR -1 /** @brief Read/Write lock structure */ typedef struct rwlock { int num_writers; /* includes waiting writers and sometimes current writer */ int curr_readers; /* includes current readers */ mutex_t writer_mu; /* mutex for exclusive writer lock */ mutex_t reader_mu; /* mutex to protect curr_readers and num_writers */ cond_t writer_cond; /* stores a queue of waiting writers */ cond_t reader_cond; /* stores a queue of waiting readers */ } rwlock_t; #endif /* _RWLOCK_TYPE_H */