// Copyright 2018 plutoo #include #include void rwlockReadLock(RwLock* r) { rmutexLock(&r->r); if (r->b++ == 0) rmutexLock(&r->g); rmutexUnlock(&r->r); } void rwlockReadUnlock(RwLock* r) { rmutexLock(&r->r); if (r->b-- == 1) rmutexUnlock(&r->g); rmutexUnlock(&r->r); } void rwlockWriteLock(RwLock* r) { rmutexLock(&r->g); } void rwlockWriteUnlock(RwLock* r) { rmutexUnlock(&r->g); }