systemc: Set the scheduler's event queue earlier.
authorGabe Black <gabeblack@google.com>
Wed, 8 Aug 2018 08:29:27 +0000 (01:29 -0700)
committerGabe Black <gabeblack@google.com>
Thu, 20 Sep 2018 01:41:44 +0000 (01:41 +0000)
The kernel can set the event queue during its own construction which
will ensure that the scheduler can schedule events as early as
possible.

Change-Id: I0e47ca0a667e77d36c97860cd7c6b7577415c801
Reviewed-on: https://gem5-review.googlesource.com/12073
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/core/kernel.cc

index 9eed325ec4ba02ccee922168a8a5229fb2cb12e0..3e3bdbdde94b52a75be235c69ac70c32b3c0fbd0 100644 (file)
@@ -54,7 +54,11 @@ sc_core::sc_status Kernel::status() { return _status; }
 void Kernel::status(sc_core::sc_status s) { _status = s; }
 
 Kernel::Kernel(Params *params) :
-    SimObject(params), t0Event(this, false, EventBase::Default_Pri - 1) {}
+    SimObject(params), t0Event(this, false, EventBase::Default_Pri - 1)
+{
+    // Install ourselves as the scheduler's event manager.
+    ::sc_gem5::scheduler.setEventQueue(eventQueue());
+}
 
 void
 Kernel::init()
@@ -93,8 +97,6 @@ Kernel::startup()
     kernel->status(::sc_core::SC_RUNNING);
 
     schedule(t0Event, curTick());
-    // Install ourselves as the scheduler's event manager.
-    ::sc_gem5::scheduler.setEventQueue(eventQueue());
     // Run update once before the event queue starts.
     ::sc_gem5::scheduler.update();
 }