diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2015-07-25 07:27:03 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2015-07-25 07:49:19 +0200 |
commit | 24538cf3a3a91481851618791b11be81437563e4 (patch) | |
tree | 4bcc9b97721170829038fe778633382c3e8754bc /compat | |
parent | 0f445ac2661b5454d491936bb780196b13d1f4ea (diff) |
move portability classes to compat library
Diffstat (limited to 'compat')
-rw-r--r-- | compat/compat.cpp | 81 | ||||
-rw-r--r-- | compat/compat.h | 37 |
2 files changed, 0 insertions, 118 deletions
diff --git a/compat/compat.cpp b/compat/compat.cpp deleted file mode 100644 index 9000b453..00000000 --- a/compat/compat.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright (c) 2013 Stanisław Halik <sthalik@misaki.pl> - - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - */ - -#include <cstring> -#include "compat.h" - -#if defined(_WIN32) -PortableLockedShm::PortableLockedShm(const char* shmName, const char* mutexName, int mapSize) -{ - hMutex = CreateMutexA(NULL, false, mutexName); - hMapFile = CreateFileMappingA( - INVALID_HANDLE_VALUE, - NULL, - PAGE_READWRITE, - 0, - mapSize, - shmName); - mem = MapViewOfFile(hMapFile, - FILE_MAP_WRITE, - 0, - 0, - mapSize); -} - -PortableLockedShm::~PortableLockedShm() -{ - UnmapViewOfFile(mem); - CloseHandle(hMapFile); - CloseHandle(hMutex); -} - -void PortableLockedShm::lock() -{ - (void) WaitForSingleObject(hMutex, INFINITE); -} - -void PortableLockedShm::unlock() -{ - (void) ReleaseMutex(hMutex); -} -#else -#pragma GCC diagnostic ignored "-Wunused-result" -PortableLockedShm::PortableLockedShm(const char *shmName, const char* /*mutexName*/, int mapSize) : size(mapSize) -{ - char filename[512] = {0}; - strcpy(filename, "/"); - strcat(filename, shmName); - fd = shm_open(filename, O_RDWR | O_CREAT, 0600); - (void) ftruncate(fd, mapSize); - mem = mmap(NULL, mapSize, PROT_READ|PROT_WRITE, MAP_SHARED, fd, (off_t)0); -} - -PortableLockedShm::~PortableLockedShm() -{ - (void) munmap(mem, size); - (void) close(fd); -} - -void PortableLockedShm::lock() -{ - flock(fd, LOCK_EX); -} - -void PortableLockedShm::unlock() -{ - flock(fd, LOCK_UN); -} -#endif - -bool PortableLockedShm::success() -{ -#ifndef _WIN32 - return (void*) mem != (void*) -1; -#else - return (void*) mem != NULL; -#endif -} diff --git a/compat/compat.h b/compat/compat.h deleted file mode 100644 index 17a0d843..00000000 --- a/compat/compat.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright (c) 2013 Stanisław Halik <sthalik@misaki.pl> - - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - */ -#pragma once - -#if defined(_WIN32) -#include <windows.h> -#else -#include <stdio.h> -#include <string.h> -#include <sys/file.h> -#include <sys/mman.h> -#include <fcntl.h> -#include <limits.h> -#include <unistd.h> -#include <sys/types.h> -#endif - -class PortableLockedShm { -public: - PortableLockedShm(const char *shmName, const char *mutexName, int mapSize); - ~PortableLockedShm(); - void lock(); - void unlock(); - bool success(); - inline void* ptr() { return mem; } -private: - void* mem; -#if defined(_WIN32) - HANDLE hMutex, hMapFile; -#else - int fd, size; -#endif -}; |