Kernel: Implement basic SpinLock

This commit is contained in:
Bananymous
2023-02-01 01:51:25 +02:00
parent 1945b716ad
commit 337569b0ca
8 changed files with 109 additions and 1 deletions

View File

@@ -0,0 +1,30 @@
#pragma once
#include <BAN/NoCopyMove.h>
namespace Kernel
{
template<typename Lock>
class LockGuard
{
BAN_NON_COPYABLE(LockGuard<Lock>);
BAN_NON_MOVABLE(LockGuard<Lock>);
public:
LockGuard(Lock& lock)
: m_lock(lock)
{
m_lock.lock();
}
~LockGuard()
{
m_lock.unlock();
}
private:
Lock& m_lock;
};
}

View File

@@ -0,0 +1,22 @@
#pragma once
#include <BAN/NoCopyMove.h>
namespace Kernel
{
class SpinLock
{
BAN_NON_COPYABLE(SpinLock);
BAN_NON_MOVABLE(SpinLock);
public:
SpinLock() = default;
void lock();
void unlock();
private:
int m_lock = 0;
};
}