From 91ec864a9c8e023f9f87d1c079a1cd8024844a7a Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 10 Jun 2021 11:43:23 +0800 Subject: import(life): ... --- works/life/operating-system-experiment/CMakeLists.txt | 2 +- works/life/operating-system-experiment/Interlocked.cpp | 16 ++++++++++++++++ works/life/operating-system-experiment/Interlocked.hpp | 10 ++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 works/life/operating-system-experiment/Interlocked.cpp create mode 100644 works/life/operating-system-experiment/Interlocked.hpp 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 +#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 -- cgit v1.2.3