(m_prio_heap.front()->getLastEnqueueTime() <= m_receiver->clockEdge()));
}
-bool
-MessageBuffer::functionalRead(Packet *pkt)
-{
- // Check the priority heap and read any messages that may
- // correspond to the address in the packet.
- for (unsigned int i = 0; i < m_prio_heap.size(); ++i) {
- Message *msg = m_prio_heap[i].get();
- if (msg->functionalRead(pkt)) return true;
- }
-
- // Read the messages in the stall queue that correspond
- // to the address in the packet.
- for (StallMsgMapType::iterator map_iter = m_stall_msg_map.begin();
- map_iter != m_stall_msg_map.end();
- ++map_iter) {
-
- for (std::list<MsgPtr>::iterator it = (map_iter->second).begin();
- it != (map_iter->second).end(); ++it) {
-
- Message *msg = (*it).get();
- if (msg->functionalRead(pkt)) return true;
- }
- }
- return false;
-}
-
uint32_t
MessageBuffer::functionalWrite(Packet *pkt)
{
void setIncomingLink(int link_id) { m_input_link_id = link_id; }
void setVnet(int net) { m_vnet_id = net; }
- // Function for figuring out if any of the messages in the buffer can
- // satisfy the read request for the address in the packet.
- // Return value, if true, indicates that the request was fulfilled.
- bool functionalRead(Packet *pkt);
-
// Function for figuring out if any of the messages in the buffer need
// to be updated with the data from the packet.
// Return value indicates the number of messages that were updated.
bool
Switch::functionalRead(Packet *pkt)
{
- // Access the buffers in the switch for performing a functional read
- for (unsigned int i = 0; i < m_port_buffers.size(); ++i) {
- if (m_port_buffers[i]->functionalRead(pkt)) {
- return true;
- }
- }
return false;
}