X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Fppmutex.h;h=f47dfd9288a7d3a0c222b9f7b556b8a42594ef6d;hb=0aef52e59b51c698a6025bdd82df77ff4b2e4390;hp=20b24033fbd9a995f498d6ba56d90b5848d709b2;hpb=474a3df3c734386bf2441cb23feae414a2c8297b;p=pazpar2-moved-to-github.git diff --git a/src/ppmutex.h b/src/ppmutex.h index 20b2403..f47dfd9 100644 --- a/src/ppmutex.h +++ b/src/ppmutex.h @@ -1,5 +1,5 @@ /* This file is part of Pazpar2. - Copyright (C) 2006-2010 Index Data + Copyright (C) 2006-2013 Index Data Pazpar2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -22,16 +22,36 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef PAZPAR2_PPMUTEX_H -#define PAZPAR2_PPMUTEXF_H +#define PAZPAR2_PPMUTEX_H #include + +#if YAZ_POSIX_THREADS #include +#endif void pazpar2_mutex_init(void); -void pazpar2_mutex_create_flag(YAZ_MUTEX *p, const char *name, int flags); void pazpar2_mutex_create(YAZ_MUTEX *p, const char *name); +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); + #endif /*