Gabe Black has submitted this change and it was merged. ( https://gem5-review.googlesource.com/c/public/gem5/+/12611 )

Change subject: systemc: Mostly implememt sc_simcontext.
......................................................................

systemc: Mostly implememt sc_simcontext.

Since we don't track the current process using the sc_curr_proc_handle
structure, we keep one around just to return from the appropriate
accessor, and set its values when it's requested. If the object is
kept around, those values won't change to track changing processes.

From what I see, none of the tests rely on the value tracking the
process beyond the callsight.

Change-Id: I1ad3b7a7b15aa0bc4d218f986ffbe7c51501b296
Reviewed-on: https://gem5-review.googlesource.com/c/12611
Reviewed-by: Gabe Black <[email protected]>
Maintainer: Gabe Black <[email protected]>
---
M src/systemc/core/sc_simcontext.cc
1 file changed, 28 insertions(+), 18 deletions(-)

Approvals:
  Gabe Black: Looks good to me, approved; Looks good to me, approved



diff --git a/src/systemc/core/sc_simcontext.cc b/src/systemc/core/sc_simcontext.cc
index 647cb16..3a085e5 100644
--- a/src/systemc/core/sc_simcontext.cc
+++ b/src/systemc/core/sc_simcontext.cc
@@ -28,50 +28,60 @@
  */

 #include "base/logging.hh"
+#include "systemc/core/object.hh"
+#include "systemc/core/scheduler.hh"
+#include "systemc/ext/core/sc_main.hh"
 #include "systemc/ext/core/sc_simcontext.hh"

 namespace sc_core
 {

-sc_dt::uint64
-sc_simcontext::delta_count() const
+namespace
 {
-    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
-    return 0;
-}

-void
-sc_simcontext::reset()
-{
-    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
-}
+size_t objIndex = 0;
+sc_simcontext currContext;
+
+sc_curr_proc_info currProcInfo;
+
+} // anonymous namespace
+
+sc_dt::uint64 sc_simcontext::delta_count() const { return sc_delta_count(); }
+void sc_simcontext::reset() { objIndex = 0; }

 sc_curr_proc_handle
 sc_simcontext::get_curr_proc_info()
 {
-    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
-    return nullptr;
+    ::sc_gem5::Process *p = ::sc_gem5::scheduler.current();
+    currProcInfo.process_handle = p;
+    currProcInfo.kind = p ? p->procKind() : SC_NO_PROC_;
+    return &currProcInfo;
 }

 sc_object *
 sc_simcontext::first_object()
 {
-    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
-    return nullptr;
+    objIndex = 0;
+    if (!::sc_gem5::allObjects.empty())
+        return ::sc_gem5::allObjects[0];
+    else
+        return nullptr;
 }

 sc_object *
 sc_simcontext::next_object()
 {
-    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
-    return nullptr;
+    objIndex++;
+    if (::sc_gem5::allObjects.size() > objIndex)
+        return ::sc_gem5::allObjects[objIndex];
+    else
+        return nullptr;
 }

 sc_simcontext *
 sc_get_curr_simcontext()
 {
-    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
-    return nullptr;
+    return &currContext;
 }

 } // namespace sc_core

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

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I1ad3b7a7b15aa0bc4d218f986ffbe7c51501b296
Gerrit-Change-Number: 12611
Gerrit-PatchSet: 7
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Andreas Sandberg <[email protected]>
Gerrit-Reviewer: Gabe Black <[email protected]>
Gerrit-Reviewer: Giacomo Travaglini <[email protected]>
Gerrit-Reviewer: Jason Lowe-Power <[email protected]>
Gerrit-Reviewer: Matthias Jung <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to