Kernel: Separate WaitSynchronization into Wait and Acquire methods.

This commit is contained in:
bunnei
2015-01-17 22:23:49 -05:00
parent 627e96fc15
commit aa01c57ae9
8 changed files with 59 additions and 18 deletions

View File

@ -32,18 +32,27 @@ public:
return available_count > 0;
}
ResultVal<bool> WaitSynchronization(unsigned index) override {
ResultVal<bool> Wait(unsigned index) override {
bool wait = !IsAvailable();
if (wait) {
Kernel::WaitCurrentThread_WaitSynchronization(WAITTYPE_SEMA, this, index);
AddWaitingThread(GetCurrentThread());
} else {
--available_count;
}
return MakeResult<bool>(wait);
}
ResultVal<bool> Acquire() override {
bool res = false;
if (IsAvailable()) {
--available_count;
res = true;
}
return MakeResult<bool>(res);
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////