Daniel Carvalho has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/47302 )

Change subject: ext: Adopt the gem5 namespace in ext/
......................................................................

ext: Adopt the gem5 namespace in ext/

Change-Id: I3da8adffdcfe9e47e88cd85b7b66f6f8e1a1757a
Signed-off-by: Daniel R. Carvalho <[email protected]>
---
M ext/sst/ExtMaster.cc
M ext/sst/ExtMaster.hh
M ext/sst/ExtSlave.cc
M ext/sst/ExtSlave.hh
M ext/sst/gem5.cc
M ext/sst/gem5.hh
6 files changed, 92 insertions(+), 71 deletions(-)



diff --git a/ext/sst/ExtMaster.cc b/ext/sst/ExtMaster.cc
index 3afd6b4..e727537 100644
--- a/ext/sst/ExtMaster.cc
+++ b/ext/sst/ExtMaster.cc
@@ -56,10 +56,10 @@
 using namespace SST::gem5;
 using namespace SST::MemHierarchy;

-ExtMaster::ExtMaster(gem5Component *g, Output &o, ::ExternalMaster& p,
+ExtMaster::ExtMaster(gem5Component *g, Output &o, ::gem5::ExternalMaster& p,
         std::string &n) :
-    Port(n, p), out(o), port(p), simPhase(CONSTRUCTION),
-    gem5(g), name(n)
+    ::gem5::ExternalMaster::Port(n, p), out(o), port(p),
+    simPhase(CONSTRUCTION), gem5(g), name(n)
 {
     Params _p; // will be ignored
nic = dynamic_cast<MemNIC*>(gem5->loadModuleWithComponent("memHierarchy.memNIC", g, _p));
@@ -130,12 +130,12 @@
     }

     Command cmdI = ev->getCmd(); // command in - SST
-    MemCmd::Command cmdO;        // command out - gem5
+    ::gem5::MemCmd::Command cmdO;        // command out - gem5
     bool data = false;

     switch (cmdI) {
-        case GetS:      cmdO = MemCmd::ReadReq;                break;
-        case GetX:      cmdO = MemCmd::WriteReq;  data = true; break;
+ case GetS: cmdO = ::gem5::MemCmd::ReadReq; break; + case GetX: cmdO = ::gem5::MemCmd::WriteReq; data = true; break;
         case GetSEx:
         case PutS:
         case PutM:
@@ -158,23 +158,24 @@
                       CommandString[cmdI]);
     }

-    Request::FlagsType flags = 0;
+    ::gem5::Request::FlagsType flags = 0;
     if (ev->queryFlag(MemEvent::F_LOCKED))
-        flags |= Request::LOCKED_RMW;
+        flags |= ::gem5::Request::LOCKED_RMW;
     if (ev->queryFlag(MemEvent::F_NONCACHEABLE))
-        flags |= Request::UNCACHEABLE;
+        flags |= ::gem5::Request::UNCACHEABLE;
     if (ev->isLoadLink()) {
         assert(cmdI == GetS);
-        cmdO = MemCmd::LoadLockedReq;
+        cmdO = ::gem5::MemCmd::LoadLockedReq;
     } else if (ev->isStoreConditional()) {
         assert(cmdI == GetX);
-        cmdO = MemCmd::StoreCondReq;
+        cmdO = ::gem5::MemCmd::StoreCondReq;
     }

- auto req = std::make_shared<Request>(ev->getAddr(), ev->getSize(), flags, 0);
+    auto req = std::make_shared<::gem5::Request>(
+        ev->getAddr(), ev->getSize(), flags, 0);
     req->setContext(ev->getGroupId());

-    auto pkt = new Packet(req, cmdO);
+    auto pkt = new ::gem5::Packet(req, cmdO);
     pkt->allocate();
     if (data) {
         pkt->setData(ev->getPayload().data());
@@ -186,7 +187,7 @@
 }

 bool
-ExtMaster::recvTimingResp(PacketPtr pkt) {
+ExtMaster::recvTimingResp(::gem5::PacketPtr pkt) {
     if (simPhase == INIT) {
out.fatal(CALL_INFO, 1, "not prepared to handle INIT-phase traffic\n");
     }
diff --git a/ext/sst/ExtMaster.hh b/ext/sst/ExtMaster.hh
index 04e98e5..8b4020b 100644
--- a/ext/sst/ExtMaster.hh
+++ b/ext/sst/ExtMaster.hh
@@ -51,10 +51,11 @@
 #include <core/component.h>
 #include <elements/memHierarchy/memEvent.h>

-#include <sim/sim_object.hh>
+#include <base/addr_range.hh>
+#include <mem/external_master.hh>
 #include <mem/packet.hh>
 #include <mem/request.hh>
-#include <mem/external_master.hh>
+#include <sim/sim_object.hh>

 namespace SST {

@@ -70,34 +71,35 @@

 class gem5Component;

-class ExtMaster : public ExternalMaster::Port {
+class ExtMaster : public ::gem5::ExternalMaster::Port
+{

     enum Phase { CONSTRUCTION, INIT, RUN };

     Output& out;
-    const ExternalMaster& port;
+    const ::gem5::ExternalMaster& port;
     Phase simPhase;

     gem5Component *const gem5;
     const std::string name;
-    std::list<PacketPtr> sendQ;
+    std::list<::gem5::PacketPtr> sendQ;
     bool blocked() { return !sendQ.empty(); }

     MemHierarchy::MemNIC * nic;

-    struct SenderState : public Packet::SenderState
+    struct SenderState : public ::gem5::Packet::SenderState
     {
         MemEvent *event;
         SenderState(MemEvent* e) : event(e) {}
     };

-    std::set<AddrRange> ranges;
+    std::set<::gem5::AddrRange> ranges;

 public:
-    bool recvTimingResp(PacketPtr);
+    bool recvTimingResp(::gem5::PacketPtr);
     void recvReqRetry();

-    ExtMaster(gem5Component*, Output&, ExternalMaster&, std::string&);
+ ExtMaster(gem5Component*, Output&, ::gem5::ExternalMaster&, std::string&);
     void init(unsigned phase);
     void setup();
     void finish();
diff --git a/ext/sst/ExtSlave.cc b/ext/sst/ExtSlave.cc
index 0e2f8b4..b9a5e78 100644
--- a/ext/sst/ExtSlave.cc
+++ b/ext/sst/ExtSlave.cc
@@ -48,13 +48,15 @@
 #undef fatal
 #endif

+#include <base/types.hh>
+
 using namespace SST;
 using namespace SST::gem5;
 using namespace SST::MemHierarchy;

 ExtSlave::ExtSlave(gem5Component *g5c, Output &out,
-        ::ExternalSlave& port, std::string &name) :
-    Port(name, port),
+        ::gem5::ExternalSlave& port, std::string &name) :
+    ::gem5::ExternalSlave::Port(name, port),
     comp(g5c), out(out), simPhase(CONSTRUCTION), initPackets(NULL),
     link(comp->configureLink(name, new Event::Handler<ExtSlave>(this,
                                               &ExtSlave::handleEvent)))
@@ -64,7 +66,8 @@
     }
 }

-void ExtSlave::init(unsigned phase)
+void
+ExtSlave::init(unsigned phase)
 {
     simPhase = INIT;
     if (initPackets) {
@@ -78,15 +81,16 @@
 }

 void
-ExtSlave::recvFunctional(PacketPtr pkt)
+ExtSlave::recvFunctional(::gem5::PacketPtr pkt)
 {
     if (simPhase == CONSTRUCTION) {
         if (initPackets == NULL) {
             initPackets = new std::list<MemEvent*>;
         }
-        ::MemCmd::Command pktCmd = (::MemCmd::Command)pkt->cmd.toInt();
-        assert(pktCmd == ::MemCmd::WriteReq);
-        Addr a = pkt->getAddr();
+        ::gem5::MemCmd::Command pktCmd =
+            (::gem5::MemCmd::Command)pkt->cmd.toInt();
+        assert(pktCmd == ::gem5::MemCmd::WriteReq);
+        ::gem5::Addr a = pkt->getAddr();
         MemEvent* ev = new MemEvent(comp, a, a, GetX);
         ev->setPayload(pkt->getSize(), pkt->getPtr<uint8_t>());
         initPackets->push_back(ev);
@@ -96,17 +100,17 @@
 }

 bool
-ExtSlave::recvTimingReq(PacketPtr pkt)
+ExtSlave::recvTimingReq(::gem5::PacketPtr pkt)
 {
     Command cmd;
-    switch ((::MemCmd::Command)pkt->cmd.toInt()) {
-    case ::MemCmd::HardPFReq:
-    case ::MemCmd::SoftPFReq:
-    case ::MemCmd::LoadLockedReq:
-    case ::MemCmd::ReadExReq:
-    case ::MemCmd::ReadReq:       cmd = GetS;   break;
-    case ::MemCmd::StoreCondReq:
-    case ::MemCmd::WriteReq:      cmd = GetX;   break;
+    switch ((::gem5::MemCmd::Command)pkt->cmd.toInt()) {
+    case ::gem5::MemCmd::HardPFReq:
+    case ::gem5::MemCmd::SoftPFReq:
+    case ::gem5::MemCmd::LoadLockedReq:
+    case ::gem5::MemCmd::ReadExReq:
+    case ::gem5::MemCmd::ReadReq:       cmd = GetS;   break;
+    case ::gem5::MemCmd::StoreCondReq:
+    case ::gem5::MemCmd::WriteReq:      cmd = GetX;   break;
     default:
         out.fatal(CALL_INFO, 1, "Don't know how to convert gem5 packet "
                   "command %s to SST\n", pkt->cmd.toString().c_str());
@@ -114,10 +118,13 @@

     auto ev = new MemEvent(comp, pkt->getAddr(), pkt->getAddr(), cmd);
     ev->setPayload(pkt->getSize(), pkt->getPtr<uint8_t>());
-    if ((::MemCmd::Command)pkt->cmd.toInt() == ::MemCmd::LoadLockedReq)
+    if ((::gem5::MemCmd::Command)pkt->cmd.toInt() ==
+        ::gem5::MemCmd::LoadLockedReq) {
         ev->setLoadLink();
-    else if ((::MemCmd::Command)pkt->cmd.toInt() == ::MemCmd::StoreCondReq)
+    } else if ((::gem5::MemCmd::Command)pkt->cmd.toInt() ==
+        ::gem5::MemCmd::StoreCondReq) {
         ev->setStoreConditional();
+    }

     if (pkt->req->isLockedRMW())   ev->setFlag(MemEvent::F_LOCKED);
     if (pkt->req->isUncacheable()) ev->setFlag(MemEvent::F_NONCACHEABLE);
@@ -152,7 +159,7 @@

     PacketMap_t::iterator mi = PacketMap.find(id);
     if (mi != PacketMap.end()) { // replying to prior request
-        PacketPtr pkt = mi->second;
+        ::gem5::PacketPtr pkt = mi->second;
         PacketMap.erase(mi);

         pkt->makeResponse();  // Convert to a response packet
@@ -175,10 +182,10 @@

         // make Req/Pkt for Snoop/no response needed
         // presently no consideration for masterId, packet type, flags...
-        RequestPtr req = std::make_shared<Request>(
+        ::gem5::RequestPtr req = std::make_shared<::gem5::Request>(
             event->getAddr(), event->getSize(), 0, 0);

-        auto pkt = new Packet(req, ::MemCmd::InvalidateReq);
+        auto pkt = new ::gem5::Packet(req, ::gem5::MemCmd::InvalidateReq);

         // Clear out bus delay notifications
         pkt->headerDelay = pkt->payloadDelay = 0;
diff --git a/ext/sst/ExtSlave.hh b/ext/sst/ExtSlave.hh
index cef7c1e..fa32655 100644
--- a/ext/sst/ExtSlave.hh
+++ b/ext/sst/ExtSlave.hh
@@ -45,12 +45,16 @@
 #ifndef EXT_SST_EXTSLAVE_HH
 #define EXT_SST_EXTSLAVE_HH

+#include <list>
+#include <string>
+
 #include <core/interfaces/simpleMem.h>

-#include <sim/sim_object.hh>
+#include <base/logging.hh>
 #include <mem/packet.hh>
 #include <mem/request.hh>
 #include <mem/external_slave.hh>
+#include <sim/sim_object.hh>

 namespace SST {
 class Link;
@@ -60,25 +64,26 @@

 class gem5Component;

-class ExtSlave : public ExternalSlave::Port {
+class ExtSlave : public ::gem5::ExternalSlave::Port
+{
   public:
     const std::string name;

     bool
-    recvTimingSnoopResp(PacketPtr packet)
+    recvTimingSnoopResp(::gem5::PacketPtr packet)
     {
         fatal("recvTimingSnoopResp unimplemented");
         return false;
     }

-    bool recvTimingReq(PacketPtr packet);
+    bool recvTimingReq(::gem5::PacketPtr packet);

-    void recvFunctional(PacketPtr packet);
+    void recvFunctional(::gem5::PacketPtr packet);

     void recvRespRetry();

-    Tick
-    recvAtomic(PacketPtr packet)
+    ::gem5::Tick
+    recvAtomic(::gem5::PacketPtr packet)
     {
         fatal("recvAtomic unimplemented");
     }
@@ -91,14 +96,14 @@

     std::list<MemEvent*>* initPackets;
     Link* link;
-    std::list<PacketPtr> respQ;
+    std::list<::gem5::PacketPtr> respQ;
     bool blocked() { return !respQ.empty(); }

-    typedef std::map<Event::id_type, ::Packet*> PacketMap_t;
+    typedef std::map<Event::id_type, ::gem5::Packet*> PacketMap_t;
     PacketMap_t PacketMap; // SST Event id -> gem5 Packet*

 public:
-    ExtSlave(gem5Component*, Output&, ExternalSlave&, std::string&);
+ ExtSlave(gem5Component*, Output&, ::gem5::ExternalSlave&, std::string&);
     void init(unsigned phase);

     void
diff --git a/ext/sst/gem5.cc b/ext/sst/gem5.cc
index 3d48e93..efe73eb 100644
--- a/ext/sst/gem5.cc
+++ b/ext/sst/gem5.cc
@@ -108,14 +108,15 @@
     splitCommandArgs(gem5DbgFlags, flags);
     for (auto flag : flags) {
         dbg.output(CALL_INFO, "  Setting Debug Flag [%s]\n", flag);
-        setDebugFlag(flag);
+        ::gem5::setDebugFlag(flag);
     }

-    ExternalMaster::registerHandler("sst", this); // these are idempotent
-    ExternalSlave ::registerHandler("sst", this);
+    // These are idempotent
+    ::gem5::ExternalMaster::registerHandler("sst", this);
+    ::gem5::ExternalSlave::registerHandler("sst", this);

-    // Initialize m5 special signal handling.
-    initSignals();
+    // Initialize gem5's special signal handling.
+    ::gem5::initSignals();

     initPython(args.size(), &args[0]);

@@ -172,11 +173,12 @@
         m->clock();
     }

-    GlobalSimLoopExitEvent *event = simulate(sim_cycles);
+    ::gem5::GlobalSimLoopExitEvent *event = ::gem5::simulate(sim_cycles);
     ++clocks_processed;
     if (event != simulate_limit_event) {
         info.output("exiting: curTick()=%lu cause=`%s` code=%d\n",
-                curTick(), event->getCause().c_str(), event->getCode());
+                ::gem5::curTick(), event->getCause().c_str(),
+                event->getCode());
         primaryComponentOKToEndSim();
         return true;
     }
@@ -248,9 +250,9 @@
     }
 }

-ExternalMaster::Port*
+::gem5::ExternalMaster::Port*
 gem5Component::getExternalPort(const std::string &name,
-    ExternalMaster &owner, const std::string &port_data)
+    ::gem5::ExternalMaster &owner, const std::string &port_data)
 {
     std::string s(name); // bridges non-& result and &-arg
     auto master = new ExtMaster(this, info, owner, s);
@@ -258,9 +260,9 @@
     return master;
 }

-ExternalSlave::Port*
+::gem5::ExternalSlave::Port*
 gem5Component::getExternalPort(const std::string &name,
-    ExternalSlave &owner, const std::string &port_data)
+    ::gem5::ExternalSlave &owner, const std::string &port_data)
 {
     std::string s(name); // bridges non-& result and &-arg
     auto slave = new ExtSlave(this, info, owner, s);
diff --git a/ext/sst/gem5.hh b/ext/sst/gem5.hh
index 0f1bed8..4dc0213 100644
--- a/ext/sst/gem5.hh
+++ b/ext/sst/gem5.hh
@@ -45,12 +45,15 @@
 #ifndef EXT_SST_GEM5_HH
 #define EXT_SST_GEM5_HH

+#include <cstdint>
 #include <string>
 #include <vector>

 #include <core/sst_config.h>
 #include <core/component.h>

+#include <mem/external_master.hh>
+#include <mem/external_slave.hh>
 #include <sim/simulate.hh>

 #include "ExtMaster.hh"
@@ -60,8 +63,9 @@
 namespace gem5 {

 class gem5Component : public SST::Component,
-                      public ExternalSlave::Handler,
-                      public ExternalMaster::Handler {
+                      public ::gem5::ExternalSlave::Handler,
+                      public ::gem5::ExternalMaster::Handler
+{
 private:

     Output dbg;
@@ -83,12 +87,12 @@
     virtual void finish();
     bool clockTick(Cycle_t);

-    virtual ExternalMaster::Port *getExternalPort(
-        const std::string &name, ExternalMaster &owner,
+    virtual ::gem5::ExternalMaster::Port *getExternalPort(
+        const std::string &name, ::gem5::ExternalMaster &owner,
         const std::string &port_data);

-    virtual ExternalSlave::Port *getExternalPort(
-        const std::string &name, ExternalSlave &owner,
+    virtual ::gem5::ExternalSlave::Port *getExternalPort(
+        const std::string &name, ::gem5::ExternalSlave &owner,
         const std::string &port_data);
 };


--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/47302
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I3da8adffdcfe9e47e88cd85b7b66f6f8e1a1757a
Gerrit-Change-Number: 47302
Gerrit-PatchSet: 1
Gerrit-Owner: Daniel Carvalho <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to