This commit is contained in:
Ren Kimura 2018-09-08 15:30:03 +00:00 committed by GitHub
commit 19a9069120
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -24,15 +24,15 @@ class HosMutex {
HosMutex() { HosMutex() {
mutexInit(&this->m); mutexInit(&this->m);
} }
void lock() { void lock() {
mutexLock(&this->m); mutexLock(&this->m);
} }
void unlock() { void unlock() {
mutexUnlock(&this->m); mutexUnlock(&this->m);
} }
bool try_lock() { bool try_lock() {
return mutexTryLock(&this->m); return mutexTryLock(&this->m);
} }
@ -45,15 +45,12 @@ class HosRecursiveMutex {
HosRecursiveMutex() { HosRecursiveMutex() {
rmutexInit(&this->m); rmutexInit(&this->m);
} }
void lock() { void lock() {
rmutexLock(&this->m); rmutexLock(&this->m);
} }
void unlock() { void unlock() {
rmutexUnlock(&this->m); rmutexUnlock(&this->m);
} }
bool try_lock() { bool try_lock() {
return rmutexTryLock(&this->m); return rmutexTryLock(&this->m);
} }
@ -66,25 +63,25 @@ class HosCondVar {
public: public:
HosCondVar() { HosCondVar() {
mutexInit(&m); mutexInit(&m);
condvarInit(&cv, &m); condvarInit(&cv);
} }
Result WaitTimeout(u64 timeout) { Result WaitTimeout(u64 timeout) {
return condvarWaitTimeout(&cv, timeout); return condvarWaitTimeout(&cv, &m, timeout);
} }
Result Wait() { Result Wait() {
return condvarWait(&cv); return condvarWait(&cv, &m);
} }
Result Wake(int num) { Result Wake(int num) {
return condvarWake(&cv, num); return condvarWake(&cv, num);
} }
Result WakeOne() { Result WakeOne() {
return condvarWakeOne(&cv); return condvarWakeOne(&cv);
} }
Result WakeAll() { Result WakeAll() {
return condvarWakeAll(&cv); return condvarWakeAll(&cv);
} }
@ -99,30 +96,30 @@ class HosSemaphore {
HosSemaphore() { HosSemaphore() {
count = 0; count = 0;
mutexInit(&m); mutexInit(&m);
condvarInit(&cv, &m); condvarInit(&cv);
} }
HosSemaphore(u64 c) : count(c) { HosSemaphore(u64 c) : count(c) {
mutexInit(&m); mutexInit(&m);
condvarInit(&cv, &m); condvarInit(&cv);
} }
void Signal() { void Signal() {
mutexLock(&this->m); mutexLock(&this->m);
count++; count++;
condvarWakeOne(&cv); condvarWakeOne(&cv);
mutexUnlock(&this->m); mutexUnlock(&this->m);
} }
void Wait() { void Wait() {
mutexLock(&this->m); mutexLock(&this->m);
while (!count) { while (!count) {
condvarWait(&cv); condvarWait(&cv, &m);
} }
count--; count--;
mutexUnlock(&this->m); mutexUnlock(&this->m);
} }
bool TryWait() { bool TryWait() {
mutexLock(&this->m); mutexLock(&this->m);
bool success = false; bool success = false;