Fix apparent bug...
[satcheck.git] / benchmarks / checkfence / linuxlock / linuxrwlocksbig.c.in
1 #include "lsl_protos.h"
2
3
4 #define RW_LOCK_BIAS            0x001000
5
6 /** Example implementation of linux rw lock along with 2 thread test
7  *  driver... */
8
9 typedef struct rwlock {
10         int lock;
11 } rwlock_t;
12
13
14 void lock_init(rwlock_t *lock) {
15   lock->lock=0;
16 }
17
18 int write_trylock(rwlock_t *rw) {
19   return lsl_cas_32(&rw->lock, 0, 1);
20 }
21
22
23 void write_unlock(rwlock_t *rw) {
24   rw->lock=0;
25 }
26
27 void foo(rwlock_t *mylock) {
28         int flag=write_trylock(mylock);
29         if (flag) {
30                 write_unlock(mylock);
31         }
32 }
33
34 void bar(rwlock_t *mylock) 
35 {  
36         for(int i=0;i<PROBLEMSIZE;i++) 
37                 foo(mylock);
38 }