diff options
Diffstat (limited to 'drivers/windows/rw_lock_windows.cpp')
-rw-r--r-- | drivers/windows/rw_lock_windows.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/drivers/windows/rw_lock_windows.cpp b/drivers/windows/rw_lock_windows.cpp new file mode 100644 index 0000000000..0da7bf4bd5 --- /dev/null +++ b/drivers/windows/rw_lock_windows.cpp @@ -0,0 +1,72 @@ + +#if defined(WINDOWS_ENABLED) + +#include "os/memory.h" +#include "rw_lock_windows.h" +#include "error_macros.h" +#include <stdio.h> + +void RWLockWindows::read_lock() { + + AcquireSRWLockShared(&lock); + +} + +void RWLockWindows::read_unlock() { + + ReleaseSRWLockShared(&lock); +} + +Error RWLockWindows::read_try_lock() { + + if (TryAcquireSRWLockShared(&lock)==0) { + return ERR_BUSY; + } else { + return OK; + } + +} + +void RWLockWindows::write_lock() { + + AcquireSRWLockExclusive(&lock); + +} + +void RWLockWindows::write_unlock() { + + ReleaseSRWLockExclusive(&lock); +} + +Error RWLockWindows::write_try_lock() { + if (TryAcquireSRWLockExclusive(&lock)==0) { + return ERR_BUSY; + } else { + return OK; + } +} + + +RWLock *RWLockWindows::create_func_windows() { + + return memnew( RWLockWindows ); +} + +void RWLockWindows::make_default() { + + create_func=create_func_windows; +} + + +RWLockWindows::RWLockWindows() { + + InitializeSRWLock(&lock); +} + + +RWLockWindows::~RWLockWindows() { + + +} + +#endif |