diff options
Diffstat (limited to 'works/life/operating-system-experiment')
| -rw-r--r-- | works/life/operating-system-experiment/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | works/life/operating-system-experiment/Interlocked.cpp | 16 | ||||
| -rw-r--r-- | works/life/operating-system-experiment/Interlocked.hpp | 10 | 
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
 | 
