Merge pull request #2314 from lioncash/const
kernel/thread: Minor interface cleanup
This commit is contained in:
commit
74a4a50470
|
@ -257,7 +257,7 @@ void Process::Acquire(Thread* thread) {
|
||||||
ASSERT_MSG(!ShouldWait(thread), "Object unavailable!");
|
ASSERT_MSG(!ShouldWait(thread), "Object unavailable!");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Process::ShouldWait(Thread* thread) const {
|
bool Process::ShouldWait(const Thread* thread) const {
|
||||||
return !is_signaled;
|
return !is_signaled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -251,7 +251,7 @@ private:
|
||||||
~Process() override;
|
~Process() override;
|
||||||
|
|
||||||
/// Checks if the specified thread should wait until this process is available.
|
/// Checks if the specified thread should wait until this process is available.
|
||||||
bool ShouldWait(Thread* thread) const override;
|
bool ShouldWait(const Thread* thread) const override;
|
||||||
|
|
||||||
/// Acquires/locks this process for the specified thread if it's available.
|
/// Acquires/locks this process for the specified thread if it's available.
|
||||||
void Acquire(Thread* thread) override;
|
void Acquire(Thread* thread) override;
|
||||||
|
|
|
@ -14,7 +14,7 @@ namespace Kernel {
|
||||||
ReadableEvent::ReadableEvent(KernelCore& kernel) : WaitObject{kernel} {}
|
ReadableEvent::ReadableEvent(KernelCore& kernel) : WaitObject{kernel} {}
|
||||||
ReadableEvent::~ReadableEvent() = default;
|
ReadableEvent::~ReadableEvent() = default;
|
||||||
|
|
||||||
bool ReadableEvent::ShouldWait(Thread* thread) const {
|
bool ReadableEvent::ShouldWait(const Thread* thread) const {
|
||||||
return !signaled;
|
return !signaled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ public:
|
||||||
return HANDLE_TYPE;
|
return HANDLE_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShouldWait(Thread* thread) const override;
|
bool ShouldWait(const Thread* thread) const override;
|
||||||
void Acquire(Thread* thread) override;
|
void Acquire(Thread* thread) override;
|
||||||
|
|
||||||
/// Unconditionally clears the readable event's state.
|
/// Unconditionally clears the readable event's state.
|
||||||
|
|
|
@ -30,7 +30,7 @@ void ServerPort::AppendPendingSession(SharedPtr<ServerSession> pending_session)
|
||||||
pending_sessions.push_back(std::move(pending_session));
|
pending_sessions.push_back(std::move(pending_session));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ServerPort::ShouldWait(Thread* thread) const {
|
bool ServerPort::ShouldWait(const Thread* thread) const {
|
||||||
// If there are no pending sessions, we wait until a new one is added.
|
// If there are no pending sessions, we wait until a new one is added.
|
||||||
return pending_sessions.empty();
|
return pending_sessions.empty();
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ public:
|
||||||
/// waiting to be accepted by this port.
|
/// waiting to be accepted by this port.
|
||||||
void AppendPendingSession(SharedPtr<ServerSession> pending_session);
|
void AppendPendingSession(SharedPtr<ServerSession> pending_session);
|
||||||
|
|
||||||
bool ShouldWait(Thread* thread) const override;
|
bool ShouldWait(const Thread* thread) const override;
|
||||||
void Acquire(Thread* thread) override;
|
void Acquire(Thread* thread) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -46,7 +46,7 @@ ResultVal<SharedPtr<ServerSession>> ServerSession::Create(KernelCore& kernel, st
|
||||||
return MakeResult(std::move(server_session));
|
return MakeResult(std::move(server_session));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ServerSession::ShouldWait(Thread* thread) const {
|
bool ServerSession::ShouldWait(const Thread* thread) const {
|
||||||
// Closed sessions should never wait, an error will be returned from svcReplyAndReceive.
|
// Closed sessions should never wait, an error will be returned from svcReplyAndReceive.
|
||||||
if (parent->client == nullptr)
|
if (parent->client == nullptr)
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -82,7 +82,7 @@ public:
|
||||||
*/
|
*/
|
||||||
ResultCode HandleSyncRequest(SharedPtr<Thread> thread);
|
ResultCode HandleSyncRequest(SharedPtr<Thread> thread);
|
||||||
|
|
||||||
bool ShouldWait(Thread* thread) const override;
|
bool ShouldWait(const Thread* thread) const override;
|
||||||
|
|
||||||
void Acquire(Thread* thread) override;
|
void Acquire(Thread* thread) override;
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
|
||||||
bool Thread::ShouldWait(Thread* thread) const {
|
bool Thread::ShouldWait(const Thread* thread) const {
|
||||||
return status != ThreadStatus::Dead;
|
return status != ThreadStatus::Dead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,16 +233,16 @@ void Thread::SetWaitSynchronizationOutput(s32 output) {
|
||||||
context.cpu_registers[1] = output;
|
context.cpu_registers[1] = output;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 Thread::GetWaitObjectIndex(WaitObject* object) const {
|
s32 Thread::GetWaitObjectIndex(const WaitObject* object) const {
|
||||||
ASSERT_MSG(!wait_objects.empty(), "Thread is not waiting for anything");
|
ASSERT_MSG(!wait_objects.empty(), "Thread is not waiting for anything");
|
||||||
auto match = std::find(wait_objects.rbegin(), wait_objects.rend(), object);
|
const auto match = std::find(wait_objects.rbegin(), wait_objects.rend(), object);
|
||||||
return static_cast<s32>(std::distance(match, wait_objects.rend()) - 1);
|
return static_cast<s32>(std::distance(match, wait_objects.rend()) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
VAddr Thread::GetCommandBufferAddress() const {
|
VAddr Thread::GetCommandBufferAddress() const {
|
||||||
// Offset from the start of TLS at which the IPC command buffer begins.
|
// Offset from the start of TLS at which the IPC command buffer begins.
|
||||||
static constexpr int CommandHeaderOffset = 0x80;
|
constexpr u64 command_header_offset = 0x80;
|
||||||
return GetTLSAddress() + CommandHeaderOffset;
|
return GetTLSAddress() + command_header_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Thread::SetStatus(ThreadStatus new_status) {
|
void Thread::SetStatus(ThreadStatus new_status) {
|
||||||
|
@ -371,7 +371,7 @@ void Thread::ChangeScheduler() {
|
||||||
system.CpuCore(processor_id).PrepareReschedule();
|
system.CpuCore(processor_id).PrepareReschedule();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Thread::AllWaitObjectsReady() {
|
bool Thread::AllWaitObjectsReady() const {
|
||||||
return std::none_of(
|
return std::none_of(
|
||||||
wait_objects.begin(), wait_objects.end(),
|
wait_objects.begin(), wait_objects.end(),
|
||||||
[this](const SharedPtr<WaitObject>& object) { return object->ShouldWait(this); });
|
[this](const SharedPtr<WaitObject>& object) { return object->ShouldWait(this); });
|
||||||
|
|
|
@ -111,7 +111,7 @@ public:
|
||||||
return HANDLE_TYPE;
|
return HANDLE_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShouldWait(Thread* thread) const override;
|
bool ShouldWait(const Thread* thread) const override;
|
||||||
void Acquire(Thread* thread) override;
|
void Acquire(Thread* thread) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -205,7 +205,7 @@ public:
|
||||||
* object in the list.
|
* object in the list.
|
||||||
* @param object Object to query the index of.
|
* @param object Object to query the index of.
|
||||||
*/
|
*/
|
||||||
s32 GetWaitObjectIndex(WaitObject* object) const;
|
s32 GetWaitObjectIndex(const WaitObject* object) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stops a thread, invalidating it from further use
|
* Stops a thread, invalidating it from further use
|
||||||
|
@ -299,7 +299,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Determines whether all the objects this thread is waiting on are ready.
|
/// Determines whether all the objects this thread is waiting on are ready.
|
||||||
bool AllWaitObjectsReady();
|
bool AllWaitObjectsReady() const;
|
||||||
|
|
||||||
const MutexWaitingThreads& GetMutexWaitingThreads() const {
|
const MutexWaitingThreads& GetMutexWaitingThreads() const {
|
||||||
return wait_mutex_threads;
|
return wait_mutex_threads;
|
||||||
|
|
|
@ -24,7 +24,7 @@ public:
|
||||||
* @param thread The thread about which we're deciding.
|
* @param thread The thread about which we're deciding.
|
||||||
* @return True if the current thread should wait due to this object being unavailable
|
* @return True if the current thread should wait due to this object being unavailable
|
||||||
*/
|
*/
|
||||||
virtual bool ShouldWait(Thread* thread) const = 0;
|
virtual bool ShouldWait(const Thread* thread) const = 0;
|
||||||
|
|
||||||
/// Acquire/lock the object for the specified thread if it is available
|
/// Acquire/lock the object for the specified thread if it is available
|
||||||
virtual void Acquire(Thread* thread) = 0;
|
virtual void Acquire(Thread* thread) = 0;
|
||||||
|
|
Reference in New Issue