From 24538cf3a3a91481851618791b11be81437563e4 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sat, 25 Jul 2015 07:27:03 +0200 Subject: move portability classes to compat library --- compat/compat.cpp | 81 ------------------------------------------------------- 1 file changed, 81 deletions(-) delete mode 100644 compat/compat.cpp (limited to 'compat/compat.cpp') 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 - - * 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 -#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 -} -- cgit v1.2.3