diff options
| author | 2016-10-04 23:01:56 -0400 | |
|---|---|---|
| committer | 2016-10-04 23:01:56 -0400 | |
| commit | 09c3e444d42856ca0978153dcabcb5c3884877b9 (patch) | |
| tree | 89732a2264868d7dddc8f4c8355c0afac62b108c /src/core/hle | |
| parent | Merge pull request #2106 from wwylele/delete-recursive (diff) | |
| parent | move ResetType to kernel.h (diff) | |
| download | yuzu-09c3e444d42856ca0978153dcabcb5c3884877b9.tar.gz yuzu-09c3e444d42856ca0978153dcabcb5c3884877b9.tar.xz yuzu-09c3e444d42856ca0978153dcabcb5c3884877b9.zip | |
Merge pull request #1652 from wwylele/kernal-tool
Debugger: implement wait tree widget
Diffstat (limited to 'src/core/hle')
| -rw-r--r-- | src/core/hle/kernel/event.h | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/kernel.h | 9 | ||||
| -rw-r--r-- | src/core/hle/kernel/thread.cpp | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/thread.h | 5 | ||||
| -rw-r--r-- | src/core/hle/kernel/timer.h | 1 | ||||
| -rw-r--r-- | src/core/hle/svc.cpp | 4 |
7 files changed, 26 insertions, 7 deletions
diff --git a/src/core/hle/kernel/event.h b/src/core/hle/kernel/event.h index 6fe74065d..8dcd23edb 100644 --- a/src/core/hle/kernel/event.h +++ b/src/core/hle/kernel/event.h | |||
| @@ -9,12 +9,6 @@ | |||
| 9 | 9 | ||
| 10 | namespace Kernel { | 10 | namespace Kernel { |
| 11 | 11 | ||
| 12 | enum class ResetType { | ||
| 13 | OneShot, | ||
| 14 | Sticky, | ||
| 15 | Pulse, | ||
| 16 | }; | ||
| 17 | |||
| 18 | class Event final : public WaitObject { | 12 | class Event final : public WaitObject { |
| 19 | public: | 13 | public: |
| 20 | /** | 14 | /** |
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 9a2c8ce05..9e1795927 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp | |||
| @@ -40,6 +40,10 @@ void WaitObject::WakeupAllWaitingThreads() { | |||
| 40 | HLE::Reschedule(__func__); | 40 | HLE::Reschedule(__func__); |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | const std::vector<SharedPtr<Thread>>& WaitObject::GetWaitingThreads() const { | ||
| 44 | return waiting_threads; | ||
| 45 | } | ||
| 46 | |||
| 43 | HandleTable::HandleTable() { | 47 | HandleTable::HandleTable() { |
| 44 | next_generation = 1; | 48 | next_generation = 1; |
| 45 | Clear(); | 49 | Clear(); |
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h index 0e95f7ff0..6b8dbecff 100644 --- a/src/core/hle/kernel/kernel.h +++ b/src/core/hle/kernel/kernel.h | |||
| @@ -53,6 +53,12 @@ enum { | |||
| 53 | DEFAULT_STACK_SIZE = 0x4000, | 53 | DEFAULT_STACK_SIZE = 0x4000, |
| 54 | }; | 54 | }; |
| 55 | 55 | ||
| 56 | enum class ResetType { | ||
| 57 | OneShot, | ||
| 58 | Sticky, | ||
| 59 | Pulse, | ||
| 60 | }; | ||
| 61 | |||
| 56 | class Object : NonCopyable { | 62 | class Object : NonCopyable { |
| 57 | public: | 63 | public: |
| 58 | virtual ~Object() {} | 64 | virtual ~Object() {} |
| @@ -149,6 +155,9 @@ public: | |||
| 149 | /// Wake up all threads waiting on this object | 155 | /// Wake up all threads waiting on this object |
| 150 | void WakeupAllWaitingThreads(); | 156 | void WakeupAllWaitingThreads(); |
| 151 | 157 | ||
| 158 | /// Get a const reference to the waiting threads list for debug use | ||
| 159 | const std::vector<SharedPtr<Thread>>& GetWaitingThreads() const; | ||
| 160 | |||
| 152 | private: | 161 | private: |
| 153 | /// Threads waiting for this object to become available | 162 | /// Threads waiting for this object to become available |
| 154 | std::vector<SharedPtr<Thread>> waiting_threads; | 163 | std::vector<SharedPtr<Thread>> waiting_threads; |
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 4486a812c..c4eeeee56 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp | |||
| @@ -665,4 +665,8 @@ void ThreadingShutdown() { | |||
| 665 | ready_queue.clear(); | 665 | ready_queue.clear(); |
| 666 | } | 666 | } |
| 667 | 667 | ||
| 668 | const std::vector<SharedPtr<Thread>>& GetThreadList() { | ||
| 669 | return thread_list; | ||
| 670 | } | ||
| 671 | |||
| 668 | } // namespace | 672 | } // namespace |
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index f63131716..e0ffcea8a 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h | |||
| @@ -236,4 +236,9 @@ void ThreadingInit(); | |||
| 236 | */ | 236 | */ |
| 237 | void ThreadingShutdown(); | 237 | void ThreadingShutdown(); |
| 238 | 238 | ||
| 239 | /** | ||
| 240 | * Get a const reference to the thread list for debug use | ||
| 241 | */ | ||
| 242 | const std::vector<SharedPtr<Thread>>& GetThreadList(); | ||
| 243 | |||
| 239 | } // namespace | 244 | } // namespace |
diff --git a/src/core/hle/kernel/timer.h b/src/core/hle/kernel/timer.h index 59a77aad3..18ea0236b 100644 --- a/src/core/hle/kernel/timer.h +++ b/src/core/hle/kernel/timer.h | |||
| @@ -5,7 +5,6 @@ | |||
| 5 | #pragma once | 5 | #pragma once |
| 6 | 6 | ||
| 7 | #include "common/common_types.h" | 7 | #include "common/common_types.h" |
| 8 | #include "core/hle/kernel/event.h" | ||
| 9 | #include "core/hle/kernel/kernel.h" | 8 | #include "core/hle/kernel/kernel.h" |
| 10 | 9 | ||
| 11 | namespace Kernel { | 10 | namespace Kernel { |
diff --git a/src/core/hle/svc.cpp b/src/core/hle/svc.cpp index 02b397eba..c6b80dc50 100644 --- a/src/core/hle/svc.cpp +++ b/src/core/hle/svc.cpp | |||
| @@ -576,6 +576,7 @@ static ResultCode CreateMutex(Handle* out_handle, u32 initial_locked) { | |||
| 576 | using Kernel::Mutex; | 576 | using Kernel::Mutex; |
| 577 | 577 | ||
| 578 | SharedPtr<Mutex> mutex = Mutex::Create(initial_locked != 0); | 578 | SharedPtr<Mutex> mutex = Mutex::Create(initial_locked != 0); |
| 579 | mutex->name = Common::StringFromFormat("mutex-%08x", Core::g_app_core->GetReg(14)); | ||
| 579 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(mutex))); | 580 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(mutex))); |
| 580 | 581 | ||
| 581 | LOG_TRACE(Kernel_SVC, "called initial_locked=%s : created handle=0x%08X", | 582 | LOG_TRACE(Kernel_SVC, "called initial_locked=%s : created handle=0x%08X", |
| @@ -646,6 +647,7 @@ static ResultCode CreateSemaphore(Handle* out_handle, s32 initial_count, s32 max | |||
| 646 | using Kernel::Semaphore; | 647 | using Kernel::Semaphore; |
| 647 | 648 | ||
| 648 | CASCADE_RESULT(SharedPtr<Semaphore> semaphore, Semaphore::Create(initial_count, max_count)); | 649 | CASCADE_RESULT(SharedPtr<Semaphore> semaphore, Semaphore::Create(initial_count, max_count)); |
| 650 | semaphore->name = Common::StringFromFormat("semaphore-%08x", Core::g_app_core->GetReg(14)); | ||
| 649 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(semaphore))); | 651 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(semaphore))); |
| 650 | 652 | ||
| 651 | LOG_TRACE(Kernel_SVC, "called initial_count=%d, max_count=%d, created handle=0x%08X", | 653 | LOG_TRACE(Kernel_SVC, "called initial_count=%d, max_count=%d, created handle=0x%08X", |
| @@ -702,6 +704,7 @@ static ResultCode CreateEvent(Handle* out_handle, u32 reset_type) { | |||
| 702 | using Kernel::Event; | 704 | using Kernel::Event; |
| 703 | 705 | ||
| 704 | SharedPtr<Event> evt = Event::Create(static_cast<Kernel::ResetType>(reset_type)); | 706 | SharedPtr<Event> evt = Event::Create(static_cast<Kernel::ResetType>(reset_type)); |
| 707 | evt->name = Common::StringFromFormat("event-%08x", Core::g_app_core->GetReg(14)); | ||
| 705 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(evt))); | 708 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(evt))); |
| 706 | 709 | ||
| 707 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", reset_type, | 710 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", reset_type, |
| @@ -748,6 +751,7 @@ static ResultCode CreateTimer(Handle* out_handle, u32 reset_type) { | |||
| 748 | using Kernel::Timer; | 751 | using Kernel::Timer; |
| 749 | 752 | ||
| 750 | SharedPtr<Timer> timer = Timer::Create(static_cast<Kernel::ResetType>(reset_type)); | 753 | SharedPtr<Timer> timer = Timer::Create(static_cast<Kernel::ResetType>(reset_type)); |
| 754 | timer->name = Common::StringFromFormat("timer-%08x", Core::g_app_core->GetReg(14)); | ||
| 751 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(timer))); | 755 | CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(std::move(timer))); |
| 752 | 756 | ||
| 753 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", reset_type, | 757 | LOG_TRACE(Kernel_SVC, "called reset_type=0x%08X : created handle=0x%08X", reset_type, |