Kernel: Refactor synchronization to better match RE

This commit is contained in:
Fernando Sahmkow
2020-02-11 17:36:39 -04:00
committed by FernandoS27
parent c5aefe42aa
commit d23d504d77
23 changed files with 212 additions and 80 deletions

View File

@ -15,26 +15,26 @@ ReadableEvent::ReadableEvent(KernelCore& kernel) : SynchronizationObject{kernel}
ReadableEvent::~ReadableEvent() = default;
bool ReadableEvent::ShouldWait(const Thread* thread) const {
return !signaled;
return !is_signaled;
}
void ReadableEvent::Acquire(Thread* thread) {
ASSERT_MSG(!ShouldWait(thread), "object unavailable!");
ASSERT_MSG(IsSignaled(), "object unavailable!");
}
void ReadableEvent::Signal() {
if (!signaled) {
signaled = true;
WakeupAllWaitingThreads();
if (!is_signaled) {
is_signaled = true;
SynchronizationObject::Signal();
};
}
void ReadableEvent::Clear() {
signaled = false;
is_signaled = false;
}
ResultCode ReadableEvent::Reset() {
if (!signaled) {
if (!is_signaled) {
return ERR_INVALID_STATE;
}