mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2024-11-23 04:12:02 +00:00
kern: fix assertion in KThread::(Try)Suspend
This commit is contained in:
parent
0af44d2875
commit
1448068b69
2 changed files with 3 additions and 2 deletions
|
@ -445,6 +445,7 @@ namespace ams::kern {
|
||||||
constexpr u32 GetSuspendFlags() const { return this->suspend_allowed_flags & this->suspend_request_flags; }
|
constexpr u32 GetSuspendFlags() const { return this->suspend_allowed_flags & this->suspend_request_flags; }
|
||||||
constexpr bool IsSuspended() const { return this->GetSuspendFlags() != 0; }
|
constexpr bool IsSuspended() const { return this->GetSuspendFlags() != 0; }
|
||||||
constexpr bool IsSuspendRequested(SuspendType type) const { return (this->suspend_request_flags & (1u << (ThreadState_SuspendShift + type))) != 0; }
|
constexpr bool IsSuspendRequested(SuspendType type) const { return (this->suspend_request_flags & (1u << (ThreadState_SuspendShift + type))) != 0; }
|
||||||
|
constexpr bool IsSuspendRequested() const { return this->suspend_request_flags != 0; }
|
||||||
void RequestSuspend(SuspendType type);
|
void RequestSuspend(SuspendType type);
|
||||||
void Resume(SuspendType type);
|
void Resume(SuspendType type);
|
||||||
void TrySuspend();
|
void TrySuspend();
|
||||||
|
|
|
@ -576,7 +576,7 @@ namespace ams::kern {
|
||||||
void KThread::TrySuspend() {
|
void KThread::TrySuspend() {
|
||||||
MESOSPHERE_ASSERT_THIS();
|
MESOSPHERE_ASSERT_THIS();
|
||||||
MESOSPHERE_ASSERT(KScheduler::IsSchedulerLockedByCurrentThread());
|
MESOSPHERE_ASSERT(KScheduler::IsSchedulerLockedByCurrentThread());
|
||||||
MESOSPHERE_ASSERT(this->IsSuspended());
|
MESOSPHERE_ASSERT(this->IsSuspendRequested());
|
||||||
|
|
||||||
/* Ensure that we have no waiters. */
|
/* Ensure that we have no waiters. */
|
||||||
if (this->GetNumKernelWaiters() > 0) {
|
if (this->GetNumKernelWaiters() > 0) {
|
||||||
|
@ -591,7 +591,7 @@ namespace ams::kern {
|
||||||
void KThread::Suspend() {
|
void KThread::Suspend() {
|
||||||
MESOSPHERE_ASSERT_THIS();
|
MESOSPHERE_ASSERT_THIS();
|
||||||
MESOSPHERE_ASSERT(KScheduler::IsSchedulerLockedByCurrentThread());
|
MESOSPHERE_ASSERT(KScheduler::IsSchedulerLockedByCurrentThread());
|
||||||
MESOSPHERE_ASSERT(this->IsSuspended());
|
MESOSPHERE_ASSERT(this->IsSuspendRequested());
|
||||||
|
|
||||||
/* Set our suspend flags in state. */
|
/* Set our suspend flags in state. */
|
||||||
const auto old_state = this->thread_state;
|
const auto old_state = this->thread_state;
|
||||||
|
|
Loading…
Reference in a new issue