#ifndef _SHARED_MEMORY_H_ #define _SHARED_MEMORY_H_ #include #include #define NBUFF 4 /* Number of Shared Memory Segments */ #define SHMKEY ((key_t) 7890) /* Shared Memory Key */ #define SEMPROX ((key_t) 7891) /* Shared Memory Proxy Semaphore Key */ #define SEMSERV ((key_t) 7892) /* Shared Memory Server Semaphore Key */ #define PERMS 0666 /* Shared Memory Permissions */ #define BUFFSIZE 1024 /* Buffer Size (Bytes) */ extern int shmid[NBUFF]; /* Shared Memory Segment Array */ extern char* buffptr[NBUFF]; /* Used for each process to attach to */ extern int semprox; /* Proxy Shared Memory Semaphore */ extern int semserv; /* Server Shared Memory Semaphore */ typedef struct shmemNode { int shmid; int semIndex; char* buff; struct shmemNode *next; } shmemNode; ///////////// // Getters // ///////////// int get_semserv(); int get_semprox(); //////////////////////////////// // Methods // //god I wish we could use C++ // //////////////////////////////// int init_shared_memory(); int attach_shared_memory(); void destroy_shared_memory(); void detach_shared_memory(); void *attach_to_shmem(int index); shmemNode *getSharedMemorySegment(); void releaseSharedMemorySegment(shmemNode* node); #endif