diff --git a/src_main/io/pisharedmemory.cpp b/src_main/io/pisharedmemory.cpp index e283f41a..3e5714ba 100644 --- a/src_main/io/pisharedmemory.cpp +++ b/src_main/io/pisharedmemory.cpp @@ -18,6 +18,9 @@ */ #include "piincludes_p.h" #include "pisharedmemory.h" +#if defined(LINUX) || defined(MAC_OS) +# define SHM_POSIX +#endif #ifdef WINDOWS #endif @@ -25,9 +28,10 @@ #endif #ifdef MAC_OS +//# include #endif -#ifdef LINUX +#ifdef SHM_POSIX # include # include # include @@ -62,7 +66,7 @@ PRIVATE_DEFINITION_START(PISharedMemory) HANDLE map; void * data; #endif -#ifdef LINUX +#ifdef SHM_POSIX void * data; bool owner; #endif @@ -108,7 +112,7 @@ bool PISharedMemory::openDevice() { } //piCout << PRIVATE->map << PRIVATE->data; #endif -#ifdef LINUX +#ifdef SHM_POSIX PRIVATE->name = ("/pip_shm_" + path()).toByteArray(); PRIVATE->name.push_back(0); int fd = shm_open((const char *)PRIVATE->name.data(), O_RDWR, 0777); @@ -143,7 +147,7 @@ bool PISharedMemory::closeDevice() { if (PRIVATE->data) UnmapViewOfFile(PRIVATE->data); if (PRIVATE->map) CloseHandle(PRIVATE->map); #endif -#ifdef LINUX +#ifdef SHM_POSIX //piCoutObj << "close" << PIString(PRIVATE->name) << PRIVATE->data; if (PRIVATE->data) munmap(PRIVATE->data, dsize); if (PRIVATE->owner) { @@ -183,7 +187,7 @@ void PISharedMemory::initPrivate() { PRIVATE->map = 0; PRIVATE->data = 0; #endif -#ifdef LINUX +#ifdef SHM_POSIX PRIVATE->data = 0; PRIVATE->owner = false; #endif @@ -195,7 +199,7 @@ PIByteArray PISharedMemory::readAll() { #ifdef WINDOWS if (!PRIVATE->data) return PIByteArray(); #endif -#ifdef LINUX +#ifdef SHM_POSIX if (!PRIVATE->data) return PIByteArray(); #endif PIByteArray a(dsize); @@ -229,7 +233,7 @@ int PISharedMemory::read(void * read_to, int max_size, int offset) { CopyMemory(read_to, &(((char*)(PRIVATE->data))[offset]), max_size); return max_size; #endif -#ifdef LINUX +#ifdef SHM_POSIX if (!PRIVATE->data) return -1; memcpy(read_to, &(((char*)(PRIVATE->data))[offset]), max_size); return max_size; @@ -249,7 +253,7 @@ int PISharedMemory::write(const void * data, int max_size, int offset) { CopyMemory(&(((char*)(PRIVATE->data))[offset]), data, max_size); return max_size; #endif -#ifdef LINUX +#ifdef SHM_POSIX if (!PRIVATE->data) return -1; memcpy(&(((char*)(PRIVATE->data))[offset]), data, max_size); return max_size;