aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64')
-rw-r--r--arch/x86_64/include/arch/shared/mutex.hpp7
-rw-r--r--arch/x86_64/src/shared/mutex.cpp17
2 files changed, 7 insertions, 17 deletions
diff --git a/arch/x86_64/include/arch/shared/mutex.hpp b/arch/x86_64/include/arch/shared/mutex.hpp
index ecd4490..33e9e17 100644
--- a/arch/x86_64/include/arch/shared/mutex.hpp
+++ b/arch/x86_64/include/arch/shared/mutex.hpp
@@ -1,5 +1,5 @@
-#ifndef TEACHOS_ARCH_X86_64_MUTEX_HPP
-#define TEACHOS_ARCH_X86_64_MUTEX_HPP
+#ifndef TEACHOS_ARCH_X86_64_SHARED_MUTEX_HPP
+#define TEACHOS_ARCH_X86_64_SHARED_MUTEX_HPP
#include <atomic>
@@ -52,4 +52,5 @@ namespace teachos::arch::shared
std::atomic<bool> locked = {false}; // Atomic boolean to track if mutex is locked or not.
};
} // namespace teachos::arch::shared
-#endif // TEACHOS_ARCH_X86_64_MUTEX_HPP \ No newline at end of file
+
+#endif // TEACHOS_ARCH_X86_64_SHARED_MUTEX_HPP
diff --git a/arch/x86_64/src/shared/mutex.cpp b/arch/x86_64/src/shared/mutex.cpp
index 65cd095..6598255 100644
--- a/arch/x86_64/src/shared/mutex.cpp
+++ b/arch/x86_64/src/shared/mutex.cpp
@@ -4,24 +4,13 @@ namespace teachos::arch::shared
{
auto mutex::lock() -> void
{
- while (true)
+ while (!try_lock())
{
- if (!locked.exchange(true, std::memory_order_acquire))
- {
- return;
- }
+ // Nothing to do
}
}
- /**
- * @brief Try to lock the mutex (non-blocking)
- *
- * @return true if lock has been acquired and false otherwise
- */
auto mutex::try_lock() -> bool { return !locked.exchange(true, std::memory_order_acquire); }
- /**
- * @brief Unlock the mutex
- */
auto mutex::unlock() -> void { locked.store(false, std::memory_order_release); }
-} // namespace teachos::arch::shared \ No newline at end of file
+} // namespace teachos::arch::shared