diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-02-11 15:46:25 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-02-11 15:46:25 +0100 |
commit | c5aefe42aaec7afa29d317709cacc8524f7add20 (patch) | |
tree | 5f9341ac7eb10d85b52c5a70e217f80963dc9e99 /src/core/hle/kernel/wait_object.h | |
parent | Merge pull request #3372 from ReinUsesLisp/fix-back-stencil (diff) | |
download | yuzu-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.h | 77 |
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 |