return bp;
}
-void
-Bus::deletePortRefs(Port *p)
-{
-
- BusPort *bp = dynamic_cast<BusPort*>(p);
- if (bp == NULL)
- panic("Couldn't convert Port* to BusPort*\n");
- // If this is our one functional port
- if (funcPort == bp)
- return;
- interfaces.erase(bp->getId());
- clearBusCache();
- delete bp;
-}
-
/** Get the ranges of anyone other buses that we are connected to. */
void
Bus::init()
/** A function used to return the port associated with this bus object. */
virtual Port *getPort(const std::string &if_name, int idx = -1);
- virtual void deletePortRefs(Port *p);
virtual void init();
virtual void startup();
Cache(const Params *p, TagStore *tags, BasePrefetcher *prefetcher);
virtual Port *getPort(const std::string &if_name, int idx = -1);
- virtual void deletePortRefs(Port *p);
void regStats();
}
}
-template<class TagStore>
-void
-Cache<TagStore>::deletePortRefs(Port *p)
-{
- if (cpuSidePort == p || memSidePort == p)
- panic("Can only delete functional ports\n");
-
- delete p;
-}
-
-
template<class TagStore>
void
Cache<TagStore>::cmpAndSwap(BlkType *blk, PacketPtr pkt)
: SimObject(params)
{
}
-
-void
-MemObject::deletePortRefs(Port *p)
-{
- panic("This object does not support port deletion\n");
-}
public:
/** Additional function to return the Port of a memory object. */
virtual Port *getPort(const std::string &if_name, int idx = -1) = 0;
-
- /** Tell object that this port is about to disappear, so it should remove it
- * from any structures that it's keeping it in. */
- virtual void deletePortRefs(Port *p) ;
};
#endif //__MEM_MEM_OBJECT_HH__
owner = _owner;
}
-void
-Port::removeConn()
-{
- if (peer != NULL)
- peer->getOwner()->deletePortRefs(peer);
- peer = NULL;
-}
-
void
Port::blobHelper(Addr addr, uint8_t *p, int size, MemCmd cmd)
{
/** Function to return the owner of this port. */
MemObject *getOwner() { return owner; }
- /** Inform the peer port to delete itself and notify it's owner about it's
- * demise. */
- void removeConn();
-
bool isConnected() { return peer != NULL; }
protected: