libnx/nx/source/kernel/rwlock.c
Juan Antonio Hernández Cánovas 377683acd5 Add rwlockInit (#155)
2018-08-24 16:20:01 +02:00

36 lines
566 B
C

// Copyright 2018 plutoo
#include "kernel/mutex.h"
#include "kernel/rwlock.h"
void rwlockInit(RwLock* r) {
rmutexInit(&r->r);
rmutexInit(&r->g);
r->b = 0;
}
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);
}