#ifndef KIT_SHARED_MEMORY_H #define KIT_SHARED_MEMORY_H #include "status.h" #include "string_ref.h" #if !defined(_WIN32) || defined(__CYGWIN__) # include #endif #ifdef __cplusplus extern "C" { #endif typedef struct { kit_status_t status; i64 size; u8 *bytes; #if defined(_WIN32) && !defined(__CYGWIN__) void *_handle; #else i8 _owned; char _name[NAME_MAX + 1]; #endif } kit_shared_memory_t; enum { KIT_SHARED_MEMORY_OPEN, KIT_SHARED_MEMORY_CREATE, }; kit_shared_memory_t kit_shared_memory_open(kit_str_t name, i64 size, i32 mode); kit_status_t kit_shared_memory_close(kit_shared_memory_t *mem); kit_status_t kit_shared_memory_clean(kit_str_t name); #ifdef __cplusplus } #endif #ifndef KIT_DISABLE_SHORT_NAMES # define shared_memory_t kit_shared_memory_t # define shared_memory_clean kit_shared_memory_clean # define shared_memory_open kit_shared_memory_open # define shared_memory_close kit_shared_memory_close # define SHARED_MEMORY_OPEN KIT_SHARED_MEMORY_OPEN # define SHARED_MEMORY_CREATE KIT_SHARED_MEMORY_CREATE #endif #endif