qLibc
qshm.c File Reference

Shared-memory APIs. More...

Go to the source code of this file.

Functions

int qshm_init (const char *keyfile, int keyid, size_t size, bool recreate)
 Initialize shared memory.
int qshm_getid (const char *keyfile, int keyid)
 Get the identifier of existing shared memory.
void * qshm_get (int shmid)
 Get a pointer to shared memory.
bool qshm_free (int shmid)
 Free shared memory.

Detailed Description

Shared-memory APIs.

Note
[your header file]
struct SharedData {
(... structrue definitions ...)
}
[shared memory creater]
// create shared memory
int shmid = qshm_init("/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 *)qshm_get(shmid);
if(sdata == NULL) {
printf("ERROR: Can't get shared memory.\n");
return -1;
}
[shared memory user]
// get shared memory id
int shmid = qshm_getid("/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 *)qshm_get(shmid);
if(sdata == NULL) {
printf("ERROR: Can't get shared memory.\n");
return -1;
}
void * qshm_get(int shmid)
Get a pointer to shared memory.
Definition qshm.c:149
int qshm_init(const char *keyfile, int keyid, size_t size, bool recreate)
Initialize shared memory.
Definition qshm.c:91
int qshm_getid(const char *keyfile, int keyid)
Get the identifier of existing shared memory.
Definition qshm.c:127

Definition in file qshm.c.

Function Documentation

◆ qshm_init()

int qshm_init ( const char * keyfile,
int keyid,
size_t size,
bool recreate )

Initialize shared memory.

Parameters
keyfileseed used to generate a unique IPC key
keyidseed used to generate a unique IPC key
sizesize of the shared memory
recreateset to true to recreate the shared memory if it already exists
Returns
non-negative shared memory identifier on success, or -1 on failure.

Definition at line 91 of file qshm.c.

◆ qshm_getid()

int qshm_getid ( const char * keyfile,
int keyid )

Get the identifier of existing shared memory.

Parameters
keyfileseed used to generate a unique IPC key
keyidseed used to generate a unique IPC key
Returns
non-negative shared memory identifier on success, or -1 on failure.

Definition at line 127 of file qshm.c.

◆ qshm_get()

void * qshm_get ( int shmid)

Get a pointer to shared memory.

Parameters
shmidshared memory identifier
Returns
pointer to shared memory, or NULL on failure.

Definition at line 149 of file qshm.c.

◆ qshm_free()

bool qshm_free ( int shmid)

Free shared memory.

Parameters
shmidshared memory identifier
Returns
true on success, otherwise false.

Definition at line 167 of file qshm.c.