This class defines a shared-memory region between a master process and one or more child processes Region has three data structures:
More...
|
| TunnelDef (size_t numBuffers, size_t bufferSize, uint32_t expectedChildren) |
| Create a new tunnel. More...
|
|
| TunnelDef (void *sPtr) |
| Access an existing tunnel Child creates the TunnelDef, reads the shmSize, and then resizes its map accordingly. More...
|
|
uint32_t | initialize (void *sPtr) |
| Finish setting up a tunnel once the manager knows the correct size of the tunnel and has mmap'd a large enough region for it. More...
|
|
virtual | ~TunnelDef () |
| Destructor.
|
|
void | shutdown () |
| Clean up a region.
|
|
size_t | getTunnelSize () |
| return size of tunnel
|
|
ShareDataType * | getSharedData () |
| return a pointer to the ShareDataType region
|
|
void | writeMessage (size_t buffer, const MsgType &command) |
| Write data to buffer, blocks until space is available. More...
|
|
MsgType | readMessage (size_t buffer) |
| Read data from buffer, blocks until message received. More...
|
|
bool | readMessageNB (size_t buffer, MsgType *result) |
| Read data from buffer, non-blocking. More...
|
|
void | clearBuffer (size_t buffer) |
| Empty the messages in a buffer. More...
|
|
bool | isMaster () |
| return whether this is a master-side tunnel or a child
|
|
template<typename ShareDataType, typename MsgType>
class SST::Core::Interprocess::TunnelDef< ShareDataType, MsgType >
This class defines a shared-memory region between a master process and one or more child processes Region has three data structures:
- internal bookkeeping (InternalSharedData),
- user defined shared data (ShareDataType)
- multiple circular-buffer queues with entries of type MsgType
- Template Parameters
-
ShareDataType | Type to put in the shared data region |
MsgType | Type of messages being sent in the circular buffers |