2018-11-05 11:51:50 +00:00
|
|
|
#include <mesosphere/processes/KWritableEvent.hpp>
|
|
|
|
#include <mesosphere/processes/KReadableEvent.hpp>
|
|
|
|
#include <mesosphere/processes/KEvent.hpp>
|
|
|
|
#include <mesosphere/threading/KScheduler.hpp>
|
|
|
|
|
|
|
|
namespace mesosphere
|
|
|
|
{
|
2018-11-05 12:57:50 +00:00
|
|
|
|
|
|
|
bool KReadableEvent::IsSignaled() const
|
|
|
|
{
|
|
|
|
return this->isSignaled;
|
2018-11-05 11:51:50 +00:00
|
|
|
}
|
|
|
|
|
2018-11-05 12:57:50 +00:00
|
|
|
KReadableEvent::~KReadableEvent()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
Result KReadableEvent::Signal()
|
|
|
|
{
|
|
|
|
KScopedCriticalSection criticalSection{};
|
2018-11-05 11:51:50 +00:00
|
|
|
|
2018-11-05 12:57:50 +00:00
|
|
|
if (!this->isSignaled) {
|
|
|
|
this->isSignaled = true;
|
|
|
|
NotifyWaiters();
|
2018-11-05 11:51:50 +00:00
|
|
|
}
|
|
|
|
|
2018-11-05 12:57:50 +00:00
|
|
|
return ResultSuccess{};
|
2018-11-05 11:51:50 +00:00
|
|
|
}
|
|
|
|
|
2018-11-05 12:57:50 +00:00
|
|
|
Result KReadableEvent::Clear()
|
|
|
|
{
|
|
|
|
Reset();
|
|
|
|
|
|
|
|
return ResultSuccess{};
|
2018-11-05 11:51:50 +00:00
|
|
|
}
|
|
|
|
|
2018-11-05 12:57:50 +00:00
|
|
|
Result KReadableEvent::Reset()
|
|
|
|
{
|
|
|
|
KScopedCriticalSection criticalSection{};
|
|
|
|
|
|
|
|
if (this->isSignaled) {
|
|
|
|
this->isSignaled = false;
|
|
|
|
return ResultSuccess{};
|
2018-11-05 11:51:50 +00:00
|
|
|
}
|
2018-11-05 12:57:50 +00:00
|
|
|
return ResultKernelInvalidState{};
|
2018-11-05 11:51:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|