2018-10-31 20:47:31 +00:00
|
|
|
#include <mesosphere/processes/KProcess.hpp>
|
|
|
|
#include <mesosphere/threading/KThread.hpp>
|
|
|
|
#include <mesosphere/kresources/KResourceLimit.hpp>
|
|
|
|
|
|
|
|
namespace mesosphere
|
|
|
|
{
|
|
|
|
|
|
|
|
void KProcess::SetLastThreadAndIdleSelectionCount(KThread *thread, ulong idleSelectionCount)
|
|
|
|
{
|
|
|
|
lastThreads[thread->GetCurrentCoreId()] = thread;
|
|
|
|
lastIdleSelectionCount[thread->GetCurrentCoreId()] = idleSelectionCount;
|
|
|
|
}
|
|
|
|
|
2018-11-15 10:49:32 +00:00
|
|
|
bool KProcess::IsSignaled() const
|
|
|
|
{
|
|
|
|
return stateChanged;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KProcess::SetDebug(KDebug *debug)
|
|
|
|
{
|
|
|
|
this->debug = debug;
|
|
|
|
if (state != State::DebugSuspended) {
|
|
|
|
state = state == State::Created ? State::CreatedAttached : State::DebugSuspended;
|
|
|
|
stateChanged = true;
|
|
|
|
NotifyWaiters();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void KProcess::ClearDebug(KProcess::State attachState)
|
|
|
|
{
|
|
|
|
debug = nullptr;
|
|
|
|
State oldState = state;
|
|
|
|
if (state == State::StartedAttached || state == State::DebugSuspended) {
|
|
|
|
state = attachState == State::Created ? State::Started : attachState; // Restore the old state
|
|
|
|
} else if (state == State::CreatedAttached) {
|
|
|
|
state = State::Created;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (state != oldState) {
|
|
|
|
stateChanged = true;
|
|
|
|
NotifyWaiters();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-10-31 20:47:31 +00:00
|
|
|
}
|