52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
#ifndef _SHARED_MEMORY_H_
|
|
#define _SHARED_MEMORY_H_
|
|
|
|
#include <sys/shm.h>
|
|
#include <semaphore.h>
|
|
|
|
#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
|