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:
parent
de34e49d15
commit
6315e5bbb5
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue