00001 #ifndef _RWLOCK_H_ 00002 #define _RWLOCK_H_ 00003 00004 #include "macros.h" 00005 00006 typedef struct rwlock_s 00007 { 00008 int readers; 00009 MUTEX_T* lock; 00010 COND_T* reader_cond; 00011 COND_T* writer_cond; 00012 } rwlock_t; 00013 00014 int rwlock_wrlock(rwlock_t* rwlock); 00015 int rwlock_wrunlock(rwlock_t* rwlock); 00016 00017 int rwlock_rdlock(rwlock_t* rwlock); 00018 int rwlock_rdunlock(rwlock_t* rwlock); 00019 00020 int rwlock_rdwait(rwlock_t* rwlock); 00021 00022 rwlock_t* rwlock_New(void); 00023 00024 int rwlock_Destroy(rwlock_t* rwlock); 00025 #endif