ruby: Make ruby #includes use full paths to the files they're including.
[gem5.git] / src / mem / port.cc
index 2e56d2486e66d9e698c0aa1de489dfaeeb84fe44..a666c968bb71ff94306931038a9dcd0b849f623e 100644 (file)
 #include "mem/mem_object.hh"
 #include "mem/port.hh"
 
-class defaultPeerPortClass: public Port
+class DefaultPeerPort : public Port
 {
   protected:
     void blowUp()
     {
-        fatal("Unconnected port!");
+        fatal("%s: Unconnected port!", peer->name());
     }
 
   public:
-    defaultPeerPortClass() : Port("default_port")
-    {}
+    DefaultPeerPort()
+        : Port("default_port", NULL)
+    { }
 
     bool recvTiming(PacketPtr)
     {
@@ -84,16 +85,18 @@ class defaultPeerPortClass: public Port
         blowUp();
     }
 
-    bool isDefaultPort() { return true; }
+    bool isDefaultPort() const { return true; }
+};
 
-} defaultPeerPort;
+DefaultPeerPort defaultPeerPort;
 
-Port::Port() : peer(&defaultPeerPort), owner(NULL)
+Port::Port(const std::string &_name, MemObject *_owner)
+    : EventManager(_owner), portName(_name), peer(&defaultPeerPort),
+      owner(_owner)
 {
 }
 
-Port::Port(const std::string &_name, MemObject *_owner) :
-    portName(_name), peer(&defaultPeerPort), owner(_owner)
+Port::~Port()
 {
 }
 
@@ -101,9 +104,17 @@ void
 Port::setPeer(Port *port)
 {
     DPRINTF(Config, "setting peer to %s\n", port->name());
+
     peer = port;
 }
 
+void
+Port::setOwner(MemObject *_owner)
+{
+    eventq = _owner->queue();
+    owner = _owner;
+}
+
 void
 Port::removeConn()
 {
@@ -150,3 +161,15 @@ Port::memsetBlob(Addr addr, uint8_t val, int size)
 
     delete [] buf;
 }
+
+
+void
+Port::printAddr(Addr a)
+{
+    Request req(a, 1, 0);
+    Packet pkt(&req, MemCmd::PrintReq, Packet::Broadcast);
+    Packet::PrintReqState prs(std::cerr);
+    pkt.senderState = &prs;
+
+    sendFunctional(&pkt);
+}