コード例 #1
0
ファイル: MRouter.cpp プロジェクト: bugamn/esesc
int32_t MRouter::sendSetStateAll(MemRequest *mreq, MsgAction ma, TimeDelta_t lat)
  /* send setState to others, return how many {{{1 */
{
  if(up_node.empty())
    return 0; // top node?

  bool doStats  = mreq->getStatsFlag();
  AddrType addr = mreq->getAddr();
  if (addr == 0xa000000005601213)
  {
    I(0);
  }

  I(mreq->isSetState());
  int32_t conta = 0;
  for(size_t i=0;i<up_node.size();i++) {
    MemRequest *breq = MemRequest::createSetState(self_mobj, mreq->getCreator(), ma, addr, doStats);
    breq->addPendingSetStateAck(mreq);

    breq->startSetState(up_node[i], lat);
    conta++;
  }

  return conta;
}
コード例 #2
0
ファイル: MRouter.cpp プロジェクト: bugamn/esesc
int32_t MRouter::sendSetStateOthers(MemRequest *mreq, MsgAction ma, TimeDelta_t lat)
  /* send setState to others, return how many {{{1 */
{
  if (up_node.size() <= 1)
    return 0; // if single node, for sure it does not get one

  bool doStats  = mreq->getStatsFlag();
  AddrType addr = mreq->getAddr();

  MemObj *skip_mobj            = 0;
  UPMapType::const_iterator it = up_map.find(mreq->getHomeNode());
  I(it != up_map.end());
  skip_mobj                    = it->second;

  int32_t conta = 0;
  I(mreq->isReq() || mreq->isReqAck());
  for(size_t i=0;i<up_node.size();i++) {
    if (up_node[i] == skip_mobj) 
      continue;
    
    if (addr == 0xa000000005601213)
    {
      I(0);
    }

    MemRequest *breq = MemRequest::createSetState(self_mobj, mreq->getCreator(), ma, addr, doStats);
    breq->addPendingSetStateAck(mreq);

    breq->startSetState(up_node[i], lat);
    conta++;
  }

  return conta;
}
コード例 #3
0
ファイル: MRouter.cpp プロジェクト: bugamn/esesc
int32_t MRouter::sendSetStateOthersPos(uint32_t pos, MemRequest *mreq, MsgAction ma, TimeDelta_t lat)
  /* send setState to specific pos, return how many {{{1 */
{
  if (up_node.size() <= 1)
    return 0; // if single node, for sure it does not get one

  bool doStats  = mreq->getStatsFlag();
  AddrType addr = mreq->getAddr();
  
  if (addr == 0xa000000005601213)
  {
    I(0);
  }


  MemRequest *breq = MemRequest::createSetState(self_mobj, mreq->getCreator(), ma, addr, doStats);
  breq->addPendingSetStateAck(mreq);

  breq->startSetState(up_node[pos], lat);

  return 1;
}