MEM: Remove the notion of the default port
authorAndreas Hansson <andreas.hansson@arm.com>
Tue, 17 Jan 2012 18:55:09 +0000 (12:55 -0600)
committerAndreas Hansson <andreas.hansson@arm.com>
Tue, 17 Jan 2012 18:55:09 +0000 (12:55 -0600)
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.

src/mem/bridge.cc
src/mem/port.cc
src/mem/port.hh

index 65ce3012e2950838c55091591836daad98cf2d03..6001870ff67f4f442710fa972555c728294bd478 100644 (file)
@@ -79,7 +79,7 @@ Bridge::getPort(const std::string &if_name, int idx)
     else
         return NULL;
 
-    if (port->getPeer() != NULL && !port->getPeer()->isDefaultPort())
+    if (port->getPeer() != NULL)
         panic("bridge side %s already connected to %s.",
                 if_name, port->getPeer()->name());
     return port;
index 946f087ebae2f6d351f3932e776f6ea442d0cfc6..eae18c6ea6e6d82842746e64ad48ff9749439ff4 100644 (file)
 #include "mem/mem_object.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)
-    : portName(_name), peer(&defaultPeerPort), owner(_owner)
+    : portName(_name), peer(NULL), owner(_owner)
 {
 }
 
@@ -118,7 +66,7 @@ Port::setOwner(MemObject *_owner)
 void
 Port::removeConn()
 {
-    if (peer->getOwner())
+    if (peer != NULL)
         peer->getOwner()->deletePortRefs(peer);
     peer = NULL;
 }
index 32f331433df72ddb593db0617564a75a7b8a8a5c..4adf8f4cdaf473fd95ed41d33d4cf6bfd085027c 100644 (file)
@@ -127,9 +127,7 @@ class Port
      * demise. */
     void removeConn();
 
-    virtual bool isDefaultPort() const { return false; }
-
-    bool isConnected() { return peer && !peer->isDefaultPort(); }
+    bool isConnected() { return peer != NULL; }
 
   protected: