The qDecoder Project

qShm.c File Reference

Shared Memory Handling API. More...


Functions

int qShmInit (const char *keyfile, int keyid, size_t size, bool ifexistdestroy)
 Initialize shared-memory.
int qShmGetId (const char *keyfile, int keyid)
 Get shared memory identifier by keyfile and keyid for existing shared memory.
void * qShmGet (int shmid)
 Get a pointer of shared memory.
bool qShmFree (int shmid)
 De-allocate shared memory.


Detailed Description

Shared Memory Handling API.

Note:
   [your header file]
   struct SharedData {
     (... structrue definitions ...)
   }

   [shared memory creater]
   // create shared memory
   int shmid = qShmInit("/some/file/for/generating/unique/key", 's', sizeof(struct SharedData), true);
   if(shmid < 0) {
     printf("ERROR: Can't initialize shared memory.\n");
     return -1;
   }

   // get shared memory pointer
   struct SharedData *sdata = (SharedData *)qShmGet(shmid);
   if(sdata == NULL) {
     printf("ERROR: Can't get shared memory.\n");
     return -1;
   }

   [shared memory user]
   // get shared memory id
   int shmid = qShmGetId("/some/file/for/generating/unique/key", 's');
   if(shmid < 0) {
     printf("ERROR: Can't get shared memory id.\n");
     return -1;
   }

   // get shared memory pointer
   struct SharedData *sdata = (SharedData *)qShmGet(shmid);
   if(sdata == NULL) {
     printf("ERROR: Can't get shared memory.\n");
     return -1;
   }

Function Documentation

int qShmInit ( const char *  keyfile,
int  keyid,
size_t  size,
bool  ifexistdestroy 
)

Initialize shared-memory.

Parameters:
keyfile seed for generating unique IPC key
keyid seed for generating unique IPC key
size size of shared memory
ifexistdestroy set to true to destroy if shared-memory already exists
Returns:
non-negative shared memory identifier if successful, otherwise returns -1

int qShmGetId ( const char *  keyfile,
int  keyid 
)

Get shared memory identifier by keyfile and keyid for existing shared memory.

Parameters:
keyfile seed for generating unique IPC key
keyid seed for generating unique IPC key
Returns:
non-negative shared memory identifier if successful, otherwise returns -1

void* qShmGet ( int  shmid  ) 

Get a pointer of shared memory.

Parameters:
shmid shared memory identifier
Returns:
a pointer of shared memory

bool qShmFree ( int  shmid  ) 

De-allocate shared memory.

Parameters:
shmid shared memory identifier
Returns:
true if successful, otherwise returns false


[Home] [About] [Examples] [Changes] [Download] [SVN Repository] [Install] [Reference]