diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2019-01-07 13:15:30 +0100 | 
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2019-01-16 07:48:47 +0100 | 
| commit | b3da5c6698d4ec39d62062d23f1da79f9c359cdf (patch) | |
| tree | 8b74effb405c964653e47a773fb33f7c08c070d0 /compat/shm.c | |
| parent | fd3eb4515639e000b899544827b5fd4ff9473937 (diff) | |
Revert "compat/shm, proto/wine: remove duplication"
This reverts commit bab093ebbe392927a92ef201fe60344d5c1191dd.
Diffstat (limited to 'compat/shm.c')
| -rw-r--r-- | compat/shm.c | 150 | 
1 files changed, 0 insertions, 150 deletions
diff --git a/compat/shm.c b/compat/shm.c deleted file mode 100644 index 95263a08..00000000 --- a/compat/shm.c +++ /dev/null @@ -1,150 +0,0 @@ -#define BUILD_SHM -#include "shm.h" - -#ifdef SHM_WIN32 - -#include <windows.h> - -SHM_FUN(void, init, const char* shm_name, const char* mutex_name, int map_size) -{ -    if (mutex_name != NULL) -    { -        self->mutex = CreateMutexA(NULL, false, mutex_name); - -        if (!self->mutex) -            goto fail; -    } - -    self->mapped_file = CreateFileMappingA( -        INVALID_HANDLE_VALUE, -        NULL, -        PAGE_READWRITE, -        0, -        (unsigned)map_size, -        shm_name); - -    if (!self->mapped_file) -        goto fail; - -    self->mem = MapViewOfFile(self->mapped_file, -                              FILE_MAP_WRITE, -                              0, -                              0, -                              (unsigned) map_size); - -    if (!self->mem) -        goto fail; - -    return; - -fail: -    SHM_FUN_NAME(free)(self); -} - -SHM_FUN0(void, free) -{ -    if (self->mem) -        (void) UnmapViewOfFile(self->mem); - -    if (self->mapped_file) -        (void) CloseHandle(self->mapped_file); - -    if (self->mutex) -        (void) CloseHandle(self->mutex); - -    self->mem = NULL; -    self->mapped_file = NULL; -    self->mutex = NULL; -} - -SHM_FUN0(void, lock) -{ -    if (self->mutex) -        (void)(WaitForSingleObject(self->mutex, INFINITE) == WAIT_OBJECT_0); -} - -SHM_FUN0(void, unlock) -{ -    (void) ReleaseMutex(self->mutex); -} - -SHM_FUN0(bool, success) -{ -    return self->mem != NULL; -} - -#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> -#include <alloca.h> - -//#pragma GCC diagnostic ignored "-Wunused-result" - -SHM_FUN(void, init, const char *shm_name, const char* mutex_name, int map_size) -{ -    char* filename = alloca(strlen(shm_name)+2); -    (void)mutex_name; - -    self->mem = (void*)-1; -    self->fd = -1; -    self->size = 0; - -    if (map_size <= 0) -        goto fail; - -    self->size = map_size; -    strcpy(filename, "/"); -    strcat(filename, shm_name); -    self->fd = shm_open(filename, O_RDWR | O_CREAT, 0600); -    (void)ftruncate(self->fd, (off_t)map_size); -    self->mem = mmap(NULL, (size_t)map_size, PROT_READ|PROT_WRITE, MAP_SHARED, self->fd, (off_t)0); - -    if (self->mem == (void*)-1) -        goto fail; - -    return; - -fail: -    SHM_FUN_NAME(free)(self); -} - -SHM_FUN0(void, free) -{ -    if (self->mem != (void*)-1) -        (void)munmap(self->mem, self->size); -    if (self->fd != -1) -        (void)close(self->fd); - -    self->mem = (void*)-1; -    self->fd = -1; -    self->size = 0; -} - -SHM_FUN0(void, lock) -{ -    flock(self->fd, LOCK_EX); -} - -SHM_FUN0(void, unlock) -{ -    flock(self->fd, LOCK_UN); -} - -SHM_FUN0(bool, success) -{ -    return self->mem != (void*) -1; -} - -#endif - -SHM_FUN0(void*, ptr) -{ -    return self->mem; -}  | 
