+typedef struct {
+ int readers_reading;
+ int writers_writing;
+#if YAZ_POSIX_THREADS
+ pthread_mutex_t mutex;
+ pthread_cond_t lock_free;
+#endif
+} Pazpar2_lock_rdwr;
+
+void pazpar2_lock_rdwr_init(Pazpar2_lock_rdwr *p);
+void pazpar2_lock_rdwr_destroy(Pazpar2_lock_rdwr *p);
+void pazpar2_lock_rdwr_rlock(Pazpar2_lock_rdwr *p);
+void pazpar2_lock_rdwr_wlock(Pazpar2_lock_rdwr *p);
+void pazpar2_lock_rdwr_runlock(Pazpar2_lock_rdwr *p);
+void pazpar2_lock_rdwr_wunlock(Pazpar2_lock_rdwr *p);
+void pazpar2_lock_rdwr_upgrade(Pazpar2_lock_rdwr *p);
+void pazpar2_lock_rdwr_downgrade(Pazpar2_lock_rdwr *p);
+