summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_thread_queue.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-11-10 04:02:11 +0100
committerbunnei <bunneidev@gmail.com>2021-12-07 01:39:17 +0100
commitbc1399204b914608715306a8a8dbe2f201dd4365 (patch)
tree7799195284bb20b15cd6be6addea57f45364136f /src/core/hle/kernel/k_thread_queue.h
parentcore: hle: kernel: Disable dispatch count tracking on single core. (diff)
downloadyuzu-bc1399204b914608715306a8a8dbe2f201dd4365.tar
yuzu-bc1399204b914608715306a8a8dbe2f201dd4365.tar.gz
yuzu-bc1399204b914608715306a8a8dbe2f201dd4365.tar.bz2
yuzu-bc1399204b914608715306a8a8dbe2f201dd4365.tar.lz
yuzu-bc1399204b914608715306a8a8dbe2f201dd4365.tar.xz
yuzu-bc1399204b914608715306a8a8dbe2f201dd4365.tar.zst
yuzu-bc1399204b914608715306a8a8dbe2f201dd4365.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/kernel/k_thread_queue.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/core/hle/kernel/k_thread_queue.h b/src/core/hle/kernel/k_thread_queue.h
index 35d471dc5..74e76e7cb 100644
--- a/src/core/hle/kernel/k_thread_queue.h
+++ b/src/core/hle/kernel/k_thread_queue.h
@@ -4,6 +4,7 @@
#pragma once
+#include "core/hle/kernel/k_scheduler.h"
#include "core/hle/kernel/k_thread.h"
namespace Kernel {
@@ -11,7 +12,16 @@ namespace Kernel {
class KThreadQueue {
public:
explicit KThreadQueue(KernelCore& kernel_) : kernel{kernel_} {}
+ virtual ~KThreadQueue(){};
+ virtual void NotifyAvailable(KThread* waiting_thread, KSynchronizationObject* signaled_object,
+ ResultCode wait_result);
+ virtual void EndWait(KThread* waiting_thread, ResultCode wait_result);
+ virtual void CancelWait(KThread* waiting_thread, ResultCode wait_result,
+ bool cancel_timer_task);
+
+ // Deprecated, will be removed in subsequent commits.
+public:
bool IsEmpty() const {
return wait_list.empty();
}
@@ -78,4 +88,11 @@ private:
KThread::WaiterList wait_list{};
};
+class KThreadQueueWithoutEndWait : public KThreadQueue {
+public:
+ explicit KThreadQueueWithoutEndWait(KernelCore& kernel_) : KThreadQueue(kernel_) {}
+
+ virtual void EndWait(KThread* waiting_thread, ResultCode wait_result) override final;
+};
+
} // namespace Kernel