typedef struct {
pthread_mutex_t m; /* read/write monitor lock */
int rwlock;
/* >0=# rdrs, <0=wrtr, 0=none */
pthread_cond_t readers_ok; /* start waiting readers */
unsigned int waiting_writers; /* # of waiting writers */
pthread_cond_t writer_ok; /* start a waiting writer */
} rwl_t;
extern void rwl_init();
extern void rwl_rdlock();
extern void rwl_wrlock();
extern void rwl_unlock();