diff options
author | bunnei <bunneidev@gmail.com> | 2018-01-09 03:41:37 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2018-01-09 03:41:37 +0100 |
commit | 423679983259948c203e546887445a59b64fc32f (patch) | |
tree | d359c88bb9347677025a9f0e64a08e0ab1733a4a /src/core/hle/kernel/semaphore.cpp | |
parent | mutex: Remove unused call to VerifyGuestState. (diff) | |
download | yuzu-423679983259948c203e546887445a59b64fc32f.tar yuzu-423679983259948c203e546887445a59b64fc32f.tar.gz yuzu-423679983259948c203e546887445a59b64fc32f.tar.bz2 yuzu-423679983259948c203e546887445a59b64fc32f.tar.lz yuzu-423679983259948c203e546887445a59b64fc32f.tar.xz yuzu-423679983259948c203e546887445a59b64fc32f.tar.zst yuzu-423679983259948c203e546887445a59b64fc32f.zip |
Diffstat (limited to 'src/core/hle/kernel/semaphore.cpp')
-rw-r--r-- | src/core/hle/kernel/semaphore.cpp | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/src/core/hle/kernel/semaphore.cpp b/src/core/hle/kernel/semaphore.cpp deleted file mode 100644 index b555bb28e..000000000 --- a/src/core/hle/kernel/semaphore.cpp +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2014 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include "common/assert.h" -#include "core/hle/kernel/errors.h" -#include "core/hle/kernel/kernel.h" -#include "core/hle/kernel/object_address_table.h" -#include "core/hle/kernel/semaphore.h" -#include "core/hle/kernel/thread.h" - -namespace Kernel { - -Semaphore::Semaphore() {} -Semaphore::~Semaphore() {} - -ResultVal<SharedPtr<Semaphore>> Semaphore::Create(VAddr guest_addr, VAddr mutex_addr, - std::string name) { - SharedPtr<Semaphore> semaphore(new Semaphore); - - semaphore->name = std::move(name); - semaphore->guest_addr = guest_addr; - semaphore->mutex_addr = mutex_addr; - - // Semaphores are referenced by guest address, so track this in the kernel - g_object_address_table.Insert(guest_addr, semaphore); - - return MakeResult<SharedPtr<Semaphore>>(std::move(semaphore)); -} - -bool Semaphore::ShouldWait(Thread* thread) const { - return GetAvailableCount() <= 0; -} - -void Semaphore::Acquire(Thread* thread) { - if (GetAvailableCount() <= 0) - return; - - SetAvailableCount(GetAvailableCount() - 1); -} - -ResultCode Semaphore::Release(s32 target) { - if (target == -1) { - // When -1, wake up all waiting threads - SetAvailableCount(GetWaitingThreads().size()); - WakeupAllWaitingThreads(); - } else { - // Otherwise, wake up just a single thread - SetAvailableCount(target); - WakeupWaitingThread(GetHighestPriorityReadyThread()); - } - - return RESULT_SUCCESS; -} - -s32 Semaphore::GetAvailableCount() const { - return Memory::Read32(guest_addr); -} - -void Semaphore::SetAvailableCount(s32 value) const { - Memory::Write32(guest_addr, value); -} - -} // namespace Kernel |