MEM: Remove the notion of the default port

This patch removes the default port and instead relies on the peer
being set to NULL initially. The binding check (i.e. is a port
connected or not) will eventually be moved to the init function of the
modules.
This commit is contained in:
Andreas Hansson 2012-01-17 12:55:09 -06:00
parent de34e49d15
commit 6315e5bbb5
3 changed files with 4 additions and 58 deletions

View file

@ -79,7 +79,7 @@ Bridge::getPort(const std::string &if_name, int idx)
else else
return NULL; return NULL;
if (port->getPeer() != NULL && !port->getPeer()->isDefaultPort()) if (port->getPeer() != NULL)
panic("bridge side %s already connected to %s.", panic("bridge side %s already connected to %s.",
if_name, port->getPeer()->name()); if_name, port->getPeer()->name());
return port; return port;

View file

@ -40,60 +40,8 @@
#include "mem/mem_object.hh" #include "mem/mem_object.hh"
#include "mem/port.hh" #include "mem/port.hh"
class DefaultPeerPort : public Port
{
protected:
void blowUp() const
{
fatal("%s: Unconnected port!", peer->name());
}
public:
DefaultPeerPort()
: Port("default_port", NULL)
{ }
bool recvTiming(PacketPtr)
{
blowUp();
return false;
}
Tick recvAtomic(PacketPtr)
{
blowUp();
return 0;
}
void recvFunctional(PacketPtr)
{
blowUp();
}
void recvStatusChange(Status)
{
blowUp();
}
unsigned
deviceBlockSize() const
{
blowUp();
return 0;
}
void getDeviceAddressRanges(AddrRangeList &, bool &)
{
blowUp();
}
bool isDefaultPort() const { return true; }
};
DefaultPeerPort defaultPeerPort;
Port::Port(const std::string &_name, MemObject *_owner) Port::Port(const std::string &_name, MemObject *_owner)
: portName(_name), peer(&defaultPeerPort), owner(_owner) : portName(_name), peer(NULL), owner(_owner)
{ {
} }
@ -118,7 +66,7 @@ Port::setOwner(MemObject *_owner)
void void
Port::removeConn() Port::removeConn()
{ {
if (peer->getOwner()) if (peer != NULL)
peer->getOwner()->deletePortRefs(peer); peer->getOwner()->deletePortRefs(peer);
peer = NULL; peer = NULL;
} }

View file

@ -127,9 +127,7 @@ class Port
* demise. */ * demise. */
void removeConn(); void removeConn();
virtual bool isDefaultPort() const { return false; } bool isConnected() { return peer != NULL; }
bool isConnected() { return peer && !peer->isDefaultPort(); }
protected: protected: