Hello

Here is the sequence of functions called in cacheController. Here, in
cache_insert_cb,  clearEntry gets called twice, I don't understand why. Once
by cache_insert_complete_cb and second time by wait_interconnect_cb (which
gets called by send_update_message).

*bool CacheController::cache_insert_cb()
{
  IF(SUCCESSFULL){
    send_update_message();
  }
    memoryHierarchy_->add_event(&cacheInsertComplete_,)


}
*
bool CacheController::send_update_message()
{
  ........
  memoryHierarchy_->add_event(&waitInterconnect_,)
}

bool CacheController::cache_insert_complete_cb()
{
  ........
  memoryHierarchy_->add_event(&clearEntry_)
}

bool CacheController::wait_interconnect_cb(void* arg)
{
    if (queueEntry->sendTo == upperInterconnect_ ||
      queueEntry->sendTo == upperInterconnect2_)
  {
  ...
  }
  else
  {
      success = lowerInterconnect_->
        get_controller_request_signal()->emit(&message);


    if (success == false)
    {
      ...
    }
    else
    {
            /*
      * If the request is for memory update, its send to
      * lower level cache so we can remove the entry from
      * local queue
            */
      if (queueEntry->request->get_type() == MEMORY_OP_UPDATE)
      {
        clear_entry_cb(queueEntry);
      }
     ...
    }
  }

  /* Free the message */
  memoryHierarchy_->free_message(&message);

  return true;
}
Thanks and Regards
Sparsh Mittal
_______________________________________________
http://www.marss86.org
Marss86-Devel mailing list
[email protected]
https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel

Reply via email to