summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/wait_object.h
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-02-11 15:46:25 +0100
committerFernando Sahmkow <fsahmkow27@gmail.com>2020-02-11 15:46:25 +0100
commitc5aefe42aaec7afa29d317709cacc8524f7add20 (patch)
tree5f9341ac7eb10d85b52c5a70e217f80963dc9e99 /src/core/hle/kernel/wait_object.h
parentMerge pull request #3372 from ReinUsesLisp/fix-back-stencil (diff)
downloadyuzu-c5aefe42aaec7afa29d317709cacc8524f7add20.tar
yuzu-c5aefe42aaec7afa29d317709cacc8524f7add20.tar.gz
yuzu-c5aefe42aaec7afa29d317709cacc8524f7add20.tar.bz2
yuzu-c5aefe42aaec7afa29d317709cacc8524f7add20.tar.lz
yuzu-c5aefe42aaec7afa29d317709cacc8524f7add20.tar.xz
yuzu-c5aefe42aaec7afa29d317709cacc8524f7add20.tar.zst
yuzu-c5aefe42aaec7afa29d317709cacc8524f7add20.zip
Diffstat (limited to 'src/core/hle/kernel/wait_object.h')
-rw-r--r--src/core/hle/kernel/wait_object.h77
1 files changed, 0 insertions, 77 deletions
diff --git a/src/core/hle/kernel/wait_object.h b/src/core/hle/kernel/wait_object.h
deleted file mode 100644
index 9a17958a4..000000000
--- a/src/core/hle/kernel/wait_object.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2014 Citra Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include <memory>
-#include <vector>
-
-#include "core/hle/kernel/object.h"
-
-namespace Kernel {
-
-class KernelCore;
-class Thread;
-
-/// Class that represents a Kernel object that a thread can be waiting on
-class WaitObject : public Object {
-public:
- explicit WaitObject(KernelCore& kernel);
- ~WaitObject() override;
-
- /**
- * Check if the specified thread should wait until the object is available
- * @param thread The thread about which we're deciding.
- * @return True if the current thread should wait due to this object being unavailable
- */
- virtual bool ShouldWait(const Thread* thread) const = 0;
-
- /// Acquire/lock the object for the specified thread if it is available
- virtual void Acquire(Thread* thread) = 0;
-
- /**
- * Add a thread to wait on this object
- * @param thread Pointer to thread to add
- */
- void AddWaitingThread(std::shared_ptr<Thread> thread);
-
- /**
- * Removes a thread from waiting on this object (e.g. if it was resumed already)
- * @param thread Pointer to thread to remove
- */
- void RemoveWaitingThread(std::shared_ptr<Thread> thread);
-
- /**
- * Wake up all threads waiting on this object that can be awoken, in priority order,
- * and set the synchronization result and output of the thread.
- */
- void WakeupAllWaitingThreads();
-
- /**
- * Wakes up a single thread waiting on this object.
- * @param thread Thread that is waiting on this object to wakeup.
- */
- void WakeupWaitingThread(std::shared_ptr<Thread> thread);
-
- /// Obtains the highest priority thread that is ready to run from this object's waiting list.
- std::shared_ptr<Thread> GetHighestPriorityReadyThread() const;
-
- /// Get a const reference to the waiting threads list for debug use
- const std::vector<std::shared_ptr<Thread>>& GetWaitingThreads() const;
-
-private:
- /// Threads waiting for this object to become available
- std::vector<std::shared_ptr<Thread>> waiting_threads;
-};
-
-// Specialization of DynamicObjectCast for WaitObjects
-template <>
-inline std::shared_ptr<WaitObject> DynamicObjectCast<WaitObject>(std::shared_ptr<Object> object) {
- if (object != nullptr && object->IsWaitable()) {
- return std::static_pointer_cast<WaitObject>(object);
- }
- return nullptr;
-}
-
-} // namespace Kernel