diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2025-07-14 15:39:09 +0000 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2025-07-14 15:39:09 +0000 |
| commit | e7eedd234954509f4f5ec52b2d62cbc4a1723936 (patch) | |
| tree | 7cff3076bf88ad07ed50066a6e7a2f8795dd27f0 /libs/kstd/src | |
| parent | 22fbbf849497c32f5b237ab70e9ed8aef63e54cf (diff) | |
| download | teachos-e7eedd234954509f4f5ec52b2d62cbc4a1723936.tar.xz teachos-e7eedd234954509f4f5ec52b2d62cbc4a1723936.zip | |
libs: begin extraction of kernel std
Diffstat (limited to 'libs/kstd/src')
| -rw-r--r-- | libs/kstd/src/mutex.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libs/kstd/src/mutex.cpp b/libs/kstd/src/mutex.cpp new file mode 100644 index 0000000..cfb1c84 --- /dev/null +++ b/libs/kstd/src/mutex.cpp @@ -0,0 +1,16 @@ +#include "kstd/mutex.hpp" + +namespace kstd +{ + auto mutex::lock() -> void + { + while (!try_lock()) + { + asm volatile("nop"); + } + } + + auto mutex::try_lock() -> bool { return !locked.exchange(true, std::memory_order_acquire); } + + auto mutex::unlock() -> void { locked.store(false, std::memory_order_release); } +} // namespace kstd |
