public void receivePacket(CachePacket p) { if (p.cb != null) { p.cb(); } }
void send_noc(int reqNode, int from, int to, int flits, Simulator.Ready cb, bool off_crit, int vc) { int cl = off_crit ? 2 : // packet class (used for split queues): 0 = ctl, 1 = data, 2 = off-crit (writebacks) (flits > 1 ? 1 : 0); CachePacket p = new CachePacket(reqNode, from, to, flits, cl, vc, cb); Simulator.network.nodes[from].queuePacket(p); }
public void receivePacket(Packet p) { #if PACKETDUMP if (m_coord.ID == 0) { Console.WriteLine("receive packet {0} at node {1} (cyc {2}) (age {3})", p, coord, Simulator.CurrentRound, Simulator.CurrentRound - p.creationTime); } #endif if (p is RetxPacket) { p.retx_count++; p.flow_open = false; p.flow_close = false; queuePacket(((RetxPacket)p).pkt); } else if (p is CachePacket) { CachePacket cp = p as CachePacket; m_cpu.receivePacket(cp); } }
// by Xiyue: // Called by Node::receivePacket () // upon calling p.cb(), CmpCache::pkt_callback() will be invoked to // 1) wake up other depended packet // 2) calling reqDone public void receivePacket(CachePacket p) { if (p.cb != null) { // The interference cycle of a txn is determined by that of the response packet. // The delay is overrided by the packet returing to the requester. p.txn.interferenceCycle = p.intfCycle; p.cb(); } }
public void receivePacket(CachePacket p) { if (p.cb != null) p.cb(); }