PLearn 0.1
|
#include <Semaphores.h>
Public Member Functions | |
SharedMemory (int n_items=1) | |
allocate shared memory | |
SharedMemory (SemId semid) | |
access an existing shared memory area | |
T * | data () const |
convert to address of beginning of shared memory segment | |
int | size () const |
~SharedMemory () | |
release id and memory | |
Protected Attributes | |
SemId | id |
shared memory id provided by the operating system at construction | |
bool | owner |
true if this process is the owner of the shared memory, i.e. | |
int | size_ |
the shared memory will be released with this object is deleted | |
T * | segment |
allocated segment |
Definition at line 167 of file Semaphores.h.
PLearn::SharedMemory< T >::SharedMemory | ( | int | n_items = 1 | ) | [inline] |
allocate shared memory
Definition at line 176 of file Semaphores.h.
References PLERROR.
: owner(true) { size_ = n_items*sizeof(T); int rv=shmget(IPC_PRIVATE, size_, 0666 | IPC_CREAT); if (rv == -1) PLERROR("SharedMemory::SharedMemory, shmget failed:%s",strerror(errno)); else id.id=rv; segment = (T*)shmat(id.id,0,0); if (segment == 0) PLERROR("SharedMemory::SharedMemory, shmat failed trying to allocate %d bytes: err=%s", size_,strerror(errno)); }
PLearn::SharedMemory< T >::SharedMemory | ( | SemId | semid | ) | [inline] |
access an existing shared memory area
Definition at line 189 of file Semaphores.h.
References PLERROR.
PLearn::SharedMemory< T >::~SharedMemory | ( | ) | [inline] |
release id and memory
Definition at line 205 of file Semaphores.h.
References PLearn::endl(), and PLERROR.
{ int rv=shmdt((char*)segment); if (rv == -1) PLERROR("SharedMemory::~SharedMemory (id=%d) shmdt failed, %s", id.id,strerror(errno)); if (owner) { rv=shmctl(id.id,IPC_RMID,0); if (rv == -1) PLERROR("SharedMemory::~SharedMemory (id=%d) shmctl failed, %s", id.id,strerror(errno)); cout << "released shared memory segment ID = " << id.id << endl; } }
T* PLearn::SharedMemory< T >::data | ( | ) | const [inline] |
convert to address of beginning of shared memory segment
Definition at line 200 of file Semaphores.h.
{ return segment; }
int PLearn::SharedMemory< T >::size | ( | ) | const [inline] |
Definition at line 202 of file Semaphores.h.
{ return size_ / sizeof(T); }
SemId PLearn::SharedMemory< T >::id [protected] |
shared memory id provided by the operating system at construction
Definition at line 169 of file Semaphores.h.
bool PLearn::SharedMemory< T >::owner [protected] |
true if this process is the owner of the shared memory, i.e.
Definition at line 170 of file Semaphores.h.
T* PLearn::SharedMemory< T >::segment [protected] |
allocated segment
Definition at line 173 of file Semaphores.h.
int PLearn::SharedMemory< T >::size_ [protected] |
the shared memory will be released with this object is deleted
in number of bytes
Definition at line 172 of file Semaphores.h.