aboutsummaryrefslogtreecommitdiff
path: root/works/life
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-06-10 11:43:23 +0800
committercrupest <crupest@outlook.com>2021-06-10 11:43:23 +0800
commit91ec864a9c8e023f9f87d1c079a1cd8024844a7a (patch)
tree1ba47d87b7ea8ef184314325c80d82da26540650 /works/life
parentf532667d936500f50447d63333544f603ec06137 (diff)
downloadcrupest-91ec864a9c8e023f9f87d1c079a1cd8024844a7a.tar.gz
crupest-91ec864a9c8e023f9f87d1c079a1cd8024844a7a.tar.bz2
crupest-91ec864a9c8e023f9f87d1c079a1cd8024844a7a.zip
import(life): ...
Diffstat (limited to 'works/life')
-rw-r--r--works/life/operating-system-experiment/CMakeLists.txt2
-rw-r--r--works/life/operating-system-experiment/Interlocked.cpp16
-rw-r--r--works/life/operating-system-experiment/Interlocked.hpp10
3 files changed, 27 insertions, 1 deletions
diff --git a/works/life/operating-system-experiment/CMakeLists.txt b/works/life/operating-system-experiment/CMakeLists.txt
index 139d2ba..bd50319 100644
--- a/works/life/operating-system-experiment/CMakeLists.txt
+++ b/works/life/operating-system-experiment/CMakeLists.txt
@@ -9,7 +9,7 @@ set(CMAKE_CXX_STANDARD 17)
find_package(fmt CONFIG REQUIRED)
find_package(Microsoft.GSL CONFIG REQUIRED)
-add_library(cru_system SHARED Thread.cpp Mutex.cpp)
+add_library(cru_system SHARED Thread.cpp Mutex.cpp Interlocked.cpp)
target_link_libraries(cru_system PUBLIC Microsoft.GSL::GSL fmt::fmt)
target_compile_definitions(cru_system PUBLIC CRU_EXPORT_API)
if(UNIX)
diff --git a/works/life/operating-system-experiment/Interlocked.cpp b/works/life/operating-system-experiment/Interlocked.cpp
new file mode 100644
index 0000000..4f224e4
--- /dev/null
+++ b/works/life/operating-system-experiment/Interlocked.cpp
@@ -0,0 +1,16 @@
+#include "Interlocked.hpp"
+
+#ifdef CRU_WINDOWS
+#include <Windows.h>
+#else
+#endif
+
+namespace cru {
+void InterlockedIncrease(volatile long long *v) {
+#ifdef CRU_WINDOWS
+ InterlockedIncrement64(v);
+#else
+
+#endif
+}
+} // namespace cru
diff --git a/works/life/operating-system-experiment/Interlocked.hpp b/works/life/operating-system-experiment/Interlocked.hpp
new file mode 100644
index 0000000..1151e39
--- /dev/null
+++ b/works/life/operating-system-experiment/Interlocked.hpp
@@ -0,0 +1,10 @@
+#ifndef HRADER_INTERLOCKED_H
+#define HRADER_INTERLOCKED_H
+
+#include "Base.h"
+
+namespace cru {
+CRU_API void InterlockedIncrease(volatile long long *v);
+}
+
+#endif