// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include "core/hle/kernel/k_scoped_lock.h" namespace Kernel { class KernelCore; class KLightLock { public: explicit KLightLock(KernelCore& kernel) : m_kernel{kernel} {} void Lock(); void Unlock(); bool LockSlowPath(uintptr_t owner, uintptr_t cur_thread); void UnlockSlowPath(uintptr_t cur_thread); bool IsLocked() const { return m_tag.load() != 0; } bool IsLockedByCurrentThread() const; private: std::atomic m_tag{}; KernelCore& m_kernel; }; using KScopedLightLock = KScopedLock; } // namespace Kernel