Files
2025-06-07 01:59:34 -04:00

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