|
|
@ -12,7 +12,7 @@
|
|
|
|
#include <utility>
|
|
|
|
#include <utility>
|
|
|
|
#include <vector>
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
|
|
#include <boost/intrusive/list.hpp>
|
|
|
|
#include "common/intrusive_list.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "common/intrusive_red_black_tree.h"
|
|
|
|
#include "common/intrusive_red_black_tree.h"
|
|
|
|
#include "common/spin_lock.h"
|
|
|
|
#include "common/spin_lock.h"
|
|
|
@ -119,7 +119,7 @@ s32 GetCurrentCoreId(KernelCore& kernel);
|
|
|
|
Core::Memory::Memory& GetCurrentMemory(KernelCore& kernel);
|
|
|
|
Core::Memory::Memory& GetCurrentMemory(KernelCore& kernel);
|
|
|
|
|
|
|
|
|
|
|
|
class KThread final : public KAutoObjectWithSlabHeapAndContainer<KThread, KWorkerTask>,
|
|
|
|
class KThread final : public KAutoObjectWithSlabHeapAndContainer<KThread, KWorkerTask>,
|
|
|
|
public boost::intrusive::list_base_hook<>,
|
|
|
|
public Common::IntrusiveListBaseNode<KThread>,
|
|
|
|
public KTimerTask {
|
|
|
|
public KTimerTask {
|
|
|
|
KERNEL_AUTOOBJECT_TRAITS(KThread, KSynchronizationObject);
|
|
|
|
KERNEL_AUTOOBJECT_TRAITS(KThread, KSynchronizationObject);
|
|
|
|
|
|
|
|
|
|
|
@ -138,7 +138,7 @@ public:
|
|
|
|
public:
|
|
|
|
public:
|
|
|
|
using ThreadContext32 = Core::ARM_Interface::ThreadContext32;
|
|
|
|
using ThreadContext32 = Core::ARM_Interface::ThreadContext32;
|
|
|
|
using ThreadContext64 = Core::ARM_Interface::ThreadContext64;
|
|
|
|
using ThreadContext64 = Core::ARM_Interface::ThreadContext64;
|
|
|
|
using WaiterList = boost::intrusive::list<KThread>;
|
|
|
|
using WaiterList = Common::IntrusiveListBaseTraits<KThread>::ListType;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Gets the thread's current priority
|
|
|
|
* Gets the thread's current priority
|
|
|
@ -750,8 +750,9 @@ private:
|
|
|
|
ConditionVariableThreadTreeTraits::TreeType<LockWithPriorityInheritanceComparator>;
|
|
|
|
ConditionVariableThreadTreeTraits::TreeType<LockWithPriorityInheritanceComparator>;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
public:
|
|
|
|
class LockWithPriorityInheritanceInfo : public KSlabAllocated<LockWithPriorityInheritanceInfo>,
|
|
|
|
class LockWithPriorityInheritanceInfo
|
|
|
|
public boost::intrusive::list_base_hook<> {
|
|
|
|
: public KSlabAllocated<LockWithPriorityInheritanceInfo>,
|
|
|
|
|
|
|
|
public Common::IntrusiveListBaseNode<LockWithPriorityInheritanceInfo> {
|
|
|
|
public:
|
|
|
|
public:
|
|
|
|
explicit LockWithPriorityInheritanceInfo(KernelCore&) {}
|
|
|
|
explicit LockWithPriorityInheritanceInfo(KernelCore&) {}
|
|
|
|
|
|
|
|
|
|
|
@ -839,7 +840,7 @@ public:
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
private:
|
|
|
|
using LockWithPriorityInheritanceInfoList =
|
|
|
|
using LockWithPriorityInheritanceInfoList =
|
|
|
|
boost::intrusive::list<LockWithPriorityInheritanceInfo>;
|
|
|
|
Common::IntrusiveListBaseTraits<LockWithPriorityInheritanceInfo>::ListType;
|
|
|
|
|
|
|
|
|
|
|
|
ConditionVariableThreadTree* m_condvar_tree{};
|
|
|
|
ConditionVariableThreadTree* m_condvar_tree{};
|
|
|
|
u64 m_condvar_key{};
|
|
|
|
u64 m_condvar_key{};
|
|
|
|