diff options
author | bunnei <bunneidev@gmail.com> | 2020-12-31 08:01:08 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2021-01-29 06:42:25 +0100 |
commit | c0d3aef28c0a0c68c18de30228f29e30f0e52533 (patch) | |
tree | 2f94a5f6e5fec4d288272f9a476ee85a8da3d0ac /src/core/hle/kernel/k_thread.h | |
parent | Merge pull request #5837 from german77/socketstub (diff) | |
download | yuzu-c0d3aef28c0a0c68c18de30228f29e30f0e52533.tar yuzu-c0d3aef28c0a0c68c18de30228f29e30f0e52533.tar.gz yuzu-c0d3aef28c0a0c68c18de30228f29e30f0e52533.tar.bz2 yuzu-c0d3aef28c0a0c68c18de30228f29e30f0e52533.tar.lz yuzu-c0d3aef28c0a0c68c18de30228f29e30f0e52533.tar.xz yuzu-c0d3aef28c0a0c68c18de30228f29e30f0e52533.tar.zst yuzu-c0d3aef28c0a0c68c18de30228f29e30f0e52533.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/kernel/k_thread.h (renamed from src/core/hle/kernel/thread.h) | 65 |
1 files changed, 32 insertions, 33 deletions
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/k_thread.h index 6b66c9a0e..75257d2b4 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/k_thread.h @@ -124,15 +124,15 @@ enum class ThreadWaitReasonForDebugging : u32 { Suspended, ///< Thread is waiting due to process suspension }; -class Thread final : public KSynchronizationObject, public boost::intrusive::list_base_hook<> { +class KThread final : public KSynchronizationObject, public boost::intrusive::list_base_hook<> { friend class KScheduler; friend class Process; public: - explicit Thread(KernelCore& kernel); - ~Thread() override; + explicit KThread(KernelCore& kernel); + ~KThread() override; - using MutexWaitingThreads = std::vector<std::shared_ptr<Thread>>; + using MutexWaitingThreads = std::vector<std::shared_ptr<KThread>>; using ThreadContext32 = Core::ARM_Interface::ThreadContext32; using ThreadContext64 = Core::ARM_Interface::ThreadContext64; @@ -149,10 +149,10 @@ public: * @param owner_process The parent process for the thread, if null, it's a kernel thread * @return A shared pointer to the newly created thread */ - static ResultVal<std::shared_ptr<Thread>> Create(Core::System& system, ThreadType type_flags, - std::string name, VAddr entry_point, - u32 priority, u64 arg, s32 processor_id, - VAddr stack_top, Process* owner_process); + static ResultVal<std::shared_ptr<KThread>> Create(Core::System& system, ThreadType type_flags, + std::string name, VAddr entry_point, + u32 priority, u64 arg, s32 processor_id, + VAddr stack_top, Process* owner_process); /** * Creates and returns a new thread. The new thread is immediately scheduled @@ -168,12 +168,10 @@ public: * @param thread_start_parameter The parameter which will passed to host context on init * @return A shared pointer to the newly created thread */ - static ResultVal<std::shared_ptr<Thread>> Create(Core::System& system, ThreadType type_flags, - std::string name, VAddr entry_point, - u32 priority, u64 arg, s32 processor_id, - VAddr stack_top, Process* owner_process, - std::function<void(void*)>&& thread_start_func, - void* thread_start_parameter); + static ResultVal<std::shared_ptr<KThread>> Create( + Core::System& system, ThreadType type_flags, std::string name, VAddr entry_point, + u32 priority, u64 arg, s32 processor_id, VAddr stack_top, Process* owner_process, + std::function<void(void*)>&& thread_start_func, void* thread_start_parameter); std::string GetName() const override { return name; @@ -387,11 +385,11 @@ public: return wait_mutex_threads; } - Thread* GetLockOwner() const { + KThread* GetLockOwner() const { return lock_owner; } - void SetLockOwner(Thread* owner) { + void SetLockOwner(KThread* owner) { lock_owner = owner; } @@ -485,22 +483,22 @@ public: next = nullptr; } - constexpr Thread* GetPrev() const { + constexpr KThread* GetPrev() const { return prev; } - constexpr Thread* GetNext() const { + constexpr KThread* GetNext() const { return next; } - constexpr void SetPrev(Thread* thread) { + constexpr void SetPrev(KThread* thread) { prev = thread; } - constexpr void SetNext(Thread* thread) { + constexpr void SetNext(KThread* thread) { next = thread; } private: - Thread* prev{}; - Thread* next{}; + KThread* prev{}; + KThread* next{}; }; QueueEntry& GetPriorityQueueEntry(s32 core) { @@ -553,11 +551,11 @@ public: return mutex_wait_address_for_debugging; } - void AddWaiter(Thread* thread); + void AddWaiter(KThread* thread); - void RemoveWaiter(Thread* thread); + void RemoveWaiter(KThread* thread); - [[nodiscard]] Thread* RemoveWaiterByKey(s32* out_num_waiters, VAddr key); + [[nodiscard]] KThread* RemoveWaiterByKey(s32* out_num_waiters, VAddr key); [[nodiscard]] VAddr GetAddressKey() const { return address_key; @@ -603,9 +601,9 @@ private: template <typename T> requires( - std::same_as<T, Thread> || + std::same_as<T, KThread> || std::same_as<T, LightCompareType>) static constexpr int Compare(const T& lhs, - const Thread& rhs) { + const KThread& rhs) { const uintptr_t l_key = lhs.GetConditionVariableKey(); const uintptr_t r_key = rhs.GetConditionVariableKey(); @@ -624,7 +622,8 @@ private: Common::IntrusiveRedBlackTreeNode condvar_arbiter_tree_node{}; using ConditionVariableThreadTreeTraits = - Common::IntrusiveRedBlackTreeMemberTraitsDeferredAssert<&Thread::condvar_arbiter_tree_node>; + Common::IntrusiveRedBlackTreeMemberTraitsDeferredAssert< + &KThread::condvar_arbiter_tree_node>; using ConditionVariableThreadTree = ConditionVariableThreadTreeTraits::TreeType<ConditionVariableComparator>; @@ -679,9 +678,9 @@ public: private: void AddSchedulingFlag(ThreadSchedFlags flag); void RemoveSchedulingFlag(ThreadSchedFlags flag); - void AddWaiterImpl(Thread* thread); - void RemoveWaiterImpl(Thread* thread); - static void RestorePriority(KernelCore& kernel, Thread* thread); + void AddWaiterImpl(KThread* thread); + void RemoveWaiterImpl(KThread* thread); + static void RestorePriority(KernelCore& kernel, KThread* thread); Common::SpinLock context_guard{}; ThreadContext32 context_32{}; @@ -736,7 +735,7 @@ private: MutexWaitingThreads wait_mutex_threads; /// Thread that owns the lock that this thread is waiting for. - Thread* lock_owner{}; + KThread* lock_owner{}; /// Handle used as userdata to reference this object when inserting into the CoreTiming queue. Handle global_handle = 0; @@ -772,7 +771,7 @@ private: u32 address_key_value{}; s32 num_kernel_waiters{}; - using WaiterList = boost::intrusive::list<Thread>; + using WaiterList = boost::intrusive::list<KThread>; WaiterList waiter_list{}; WaiterList pinned_waiter_list{}; |