summaryrefslogtreecommitdiffhomepage
path: root/opentrack-compat/shm.h
diff options
context:
space:
mode:
Diffstat (limited to 'opentrack-compat/shm.h')
-rw-r--r--opentrack-compat/shm.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/opentrack-compat/shm.h b/opentrack-compat/shm.h
new file mode 100644
index 00000000..17a0d843
--- /dev/null
+++ b/opentrack-compat/shm.h
@@ -0,0 +1,37 @@
+/* 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
+};