Luna/kernel/src/thread/Spinlock.cpp
apio 99e681aeb4 Forgot to add volatile
Did I check to see if it compiled before making the previous commit? Yes, of course, why are you asking? ...
2022-09-18 20:16:46 +02:00

27 lines
535 B
C++

#include "thread/Spinlock.h"
extern "C" void spinlock_lock_acquire(volatile uint64_t* lock);
extern "C" void spinlock_lock_release(volatile uint64_t* lock);
extern "C" int spinlock_lock_is_locked(volatile uint64_t* lock);
void Spinlock::acquire()
{
spinlock_lock_acquire(&m_lock);
}
void Spinlock::release()
{
spinlock_lock_release(&m_lock);
}
bool Spinlock::locked()
{
return spinlock_lock_is_locked(&m_lock);
}
void lock(Spinlock& lock, void (*action)(void))
{
lock.acquire();
action();
lock.release();
}