diff options
| author | bunnei <bunneidev@gmail.com> | 2021-02-27 12:48:35 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-27 12:48:35 -0700 |
| commit | 09f7c355c6d7e3c7845ba96d9704489d2d5853f4 (patch) | |
| tree | b12127263c0e4999f0a6e9edfe7f8f25adef9d37 /src/core/hle/kernel/k_spin_lock.h | |
| parent | bfa16444640049b2c265fb3f2491252a1d1fe5fd (diff) | |
| parent | 93e20867b0ab2e737e231a9b5bb29d40947fb311 (diff) | |
Merge pull request #5953 from bunnei/memory-refactor-1
Kernel Rework: Memory updates and refactoring (Part 1)
Diffstat (limited to 'src/core/hle/kernel/k_spin_lock.h')
| -rw-r--r-- | src/core/hle/kernel/k_spin_lock.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/core/hle/kernel/k_spin_lock.h b/src/core/hle/kernel/k_spin_lock.h new file mode 100644 index 000000000..12c4b2e88 --- /dev/null +++ b/src/core/hle/kernel/k_spin_lock.h @@ -0,0 +1,33 @@ +// Copyright 2021 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <atomic> + +#include "core/hle/kernel/k_scoped_lock.h" + +namespace Kernel { + +class KSpinLock { +public: + KSpinLock() = default; + + KSpinLock(const KSpinLock&) = delete; + KSpinLock& operator=(const KSpinLock&) = delete; + + KSpinLock(KSpinLock&&) = delete; + KSpinLock& operator=(KSpinLock&&) = delete; + + void Lock(); + void Unlock(); + [[nodiscard]] bool TryLock(); + +private: + std::atomic_flag lck = ATOMIC_FLAG_INIT; +}; + +using KScopedSpinLock = KScopedLock<KSpinLock>; + +} // namespace Kernel |
