X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=linuxrwlocks%2Flinuxrwlocks.h;fp=linuxrwlocks%2Flinuxrwlocks.h;h=d41783235c41a565fd70e04ba40139c417ee5736;hb=1e4cd56e5cf72f7cb6dddb2990183f050afc4cbc;hp=0000000000000000000000000000000000000000;hpb=7ca8c7d4c3d13ce31873200b12403bb4ea7e4195;p=model-checker-benchmarks.git diff --git a/linuxrwlocks/linuxrwlocks.h b/linuxrwlocks/linuxrwlocks.h new file mode 100644 index 0000000..d417832 --- /dev/null +++ b/linuxrwlocks/linuxrwlocks.h @@ -0,0 +1,34 @@ +#ifndef _LINUXRWLOCKS_H +#define _LINUXRWLOCKS_H + +#include +#include +#include + +#include "librace.h" + +#define RW_LOCK_BIAS 0x00100000 +#define WRITE_LOCK_CMP RW_LOCK_BIAS + +typedef union { + atomic_int lock; +} rwlock_t; + + +int read_can_lock(rwlock_t *lock); + +int write_can_lock(rwlock_t *lock); + +void read_lock(rwlock_t *rw); + +void write_lock(rwlock_t *rw); + +int read_trylock(rwlock_t *rw); + +int write_trylock(rwlock_t *rw); + +void read_unlock(rwlock_t *rw); + +void write_unlock(rwlock_t *rw); + +#endif