SST
7.2.0
StructuralSimulationToolkit
|
Link between two components. More...
#include <link.h>
Public Member Functions | |
Link (LinkId_t id) | |
Create a new link with a given ID. | |
void | setLatency (Cycle_t lat) |
set minimum link latency | |
void | addRecvLatency (int cycles, std::string timebase) |
Set additional Latency to be added on to events coming in on this link. More... | |
void | addRecvLatency (SimTime_t cycles, TimeConverter *timebase) |
Set additional Latency to be added on to events coming in on this link. More... | |
void | setFunctor (Event::HandlerBase *functor) |
Set the callback function to be called when a message is delivered. More... | |
void | setPolling () |
Specifies that this link has no callback, and is poll-based only. | |
void | send (SimTime_t delay, TimeConverter *tc, Event *event) |
Send an event over the link with additional delay. More... | |
void | send (SimTime_t delay, Event *event) |
Send an event with additional delay. More... | |
void | send (Event *event) |
Send an event with the Link's default delay. More... | |
Event * | recv () |
Retrieve a pending event from the Link. More... | |
void | setDefaultTimeBase (TimeConverter *tc) |
Manually set the default detaulTimeBase. More... | |
TimeConverter * | getDefaultTimeBase () |
Return the default Time Base for this link. | |
void | deliverEvent (Event *event) const |
Causes an event to be delivered to the registered callback. | |
LinkId_t | getId () |
Return the ID of this link. | |
void | sendUntimedData (Event *data) |
Send data during the init() phase. More... | |
Event * | recvUntimedData () |
Receive an event (if any) during the init() phase. | |
void | sendInitData (Event *init_data) |
Send data during the complete() phase. More... | |
Event * | recvInitData () |
Receive an event (if any) during the complete() phase. | |
Protected Attributes | |
ActivityQueue * | recvQueue |
Queue of events to be received by the owning component. | |
ActivityQueue * | untimedQueue |
Queue of events to be received during init by the owning component. | |
ActivityQueue * | configuredQueue |
Currently active Queue. | |
Event::HandlerBase * | rFunctor |
Recieve functor. More... | |
TimeConverter * | defaultTimeBase |
Timebase used if no other timebase is specified. More... | |
SimTime_t | latency |
Latency of the link. More... | |
Link * | pair_link |
Pointer to the opposite side of this link. | |
Static Protected Attributes | |
static ActivityQueue * | uninitQueue = new UninitializedQueue("ERROR: Trying to send or recv from link during initialization. Send and Recv cannot be called before setup.") |
Unitialized queue. More... | |
static ActivityQueue * | afterInitQueue = new UninitializedQueue("ERROR: Trying to call sendUntimedData/sendInitData or recvUntimedData/recvInitData during the run phase.") |
Unitialized queue. More... | |
static ActivityQueue * | afterRunQueue = new UninitializedQueue("ERROR: Trying to call send or recv during complete phase.") |
Unitialized queue. More... | |
Friends | |
class | LinkPair |
class | NewRankSync |
class | NewThreadSync |
class | Simulation |
class | SyncBase |
class | ThreadSync |
class | SyncManager |
class | ComponentInfo |
Link between two components.
Carries events
void SST::Link::addRecvLatency | ( | int | cycles, |
std::string | timebase | ||
) |
Set additional Latency to be added on to events coming in on this link.
cycles | Number of Cycles to be added |
timebase | Base Units of cycles |
References SST::TimeLord::getSimCycles(), SST::Simulation::getSimulation(), SST::Simulation::getTimeLord(), latency, and pair_link.
void SST::Link::addRecvLatency | ( | SimTime_t | cycles, |
TimeConverter * | timebase | ||
) |
Set additional Latency to be added on to events coming in on this link.
cycles | Number of Cycles to be added |
timebase | Base Units of cycles |
References SST::TimeConverter::convertToCoreTime(), latency, and pair_link.
Event * SST::Link::recv | ( | ) |
Retrieve a pending event from the Link.
For links which do not have a set event handler, they can be polled with this function. Returns NULL if there is no pending event.
References SST::ActivityQueue::empty(), SST::Output::fatal(), SST::ActivityQueue::front(), SST::Simulation::getCurrentSimCycle(), SST::Activity::getDeliveryTime(), SST::Simulation::getSimulation(), SST::Simulation::getSimulationOutput(), SST::ActivityQueue::pop(), and recvQueue.
Referenced by send().
void SST::Link::send | ( | SimTime_t | delay, |
TimeConverter * | tc, | ||
Event * | event | ||
) |
Send an event over the link with additional delay.
Sends an event over a link with an additional delay specified with a TimeConverter. I.e. the total delay is the link's delay + the additional specified delay.
delay | - additional delay |
tc | - time converter to specify units for the additional delay |
event | - the Event to send |
References SST::TimeConverter::convertToCoreTime(), SST::Output::fatal(), SST::Simulation::getCurrentSimCycle(), SST::Simulation::getSimulation(), SST::Simulation::getSimulationOutput(), SST::ActivityQueue::insert(), latency, pair_link, and recvQueue.
Referenced by send(), and setFunctor().
|
inline |
Send an event with additional delay.
Sends an event over a link with additional delay specified by the Link's default timebase.
delay | The additional delay, in units of the default Link timebase |
event | The event to send |
References defaultTimeBase, and send().
|
inline |
Send an event with the Link's default delay.
event | The event to send |
References getDefaultTimeBase(), recv(), send(), and setDefaultTimeBase().
|
inline |
Send data during the complete() phase.
References sendUntimedData().
Referenced by SST::Interfaces::SimpleMem::sendInitData().
void SST::Link::sendUntimedData | ( | Event * | data | ) |
Send data during the init() phase.
References SST::Simulation::getSimulation(), SST::ActivityQueue::insert(), pair_link, SST::Event::setDeliveryLink(), SST::Activity::setDeliveryTime(), and untimedQueue.
Referenced by getId(), and sendInitData().
void SST::Link::setDefaultTimeBase | ( | TimeConverter * | tc | ) |
Manually set the default detaulTimeBase.
tc | TimeConverter object for the timebase |
References defaultTimeBase.
Referenced by SST::BaseComponent::configureLink(), SST::Simulation::performWireUp(), and send().
|
inline |
Set the callback function to be called when a message is delivered.
References rFunctor, send(), and setPolling().
Referenced by SST::BaseComponent::configureLink(), and SST::BaseComponent::selfLink().
|
staticprotected |
|
staticprotected |
|
protected |
Timebase used if no other timebase is specified.
Used to specify the untits for added delays when sending, such as in Link::send(). Often set by the Component::registerClock() function if the regAll argument is true.
Referenced by getDefaultTimeBase(), Link(), send(), and setDefaultTimeBase().
|
protected |
Latency of the link.
It is used by the partitioner as the weight. This latency is added to the delay put on the event by the component.
Referenced by addRecvLatency(), Link(), send(), and setLatency().
|
protected |
Recieve functor.
This functor is set when the link is connected. Determines what the receiver wants to be called
Referenced by Link(), and setFunctor().
|
staticprotected |