summaryrefslogtreecommitdiff
path: root/src/systemc/ext/core
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2018-07-04 22:41:29 -0700
committerGabe Black <gabeblack@google.com>2018-09-05 06:04:19 +0000
commit7088d69ab5fc70fca4890e0d0169fadd2b19bab8 (patch)
treec74b56e47f903c7fb8e722393e86a28410ae2c21 /src/systemc/ext/core
parent0aec777bf2fff0ac61cd36b7c0358dbe9350c784 (diff)
downloadgem5-7088d69ab5fc70fca4890e0d0169fadd2b19bab8.tar.xz
systemc: Implement channel updates and rework the scheduler.
This change implements channel updates, and also reworks the scheduler to delegate more to the gem5 event queue by taking advantage of event priorities to ensure things happen in the right order. There's a lengthy comment in scheduler.hh describes how that all works. Change-Id: I5dee71b86b2e612bb720a4429f3a72e4b7c6d01f Reviewed-on: https://gem5-review.googlesource.com/11710 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc/ext/core')
-rw-r--r--src/systemc/ext/core/sc_prim.hh14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/systemc/ext/core/sc_prim.hh b/src/systemc/ext/core/sc_prim.hh
index 2348f453d..106489280 100644
--- a/src/systemc/ext/core/sc_prim.hh
+++ b/src/systemc/ext/core/sc_prim.hh
@@ -33,6 +33,13 @@
#include "sc_object.hh"
#include "sc_time.hh"
+namespace sc_gem5
+{
+
+class Channel;
+
+} // namespace sc_gem5
+
namespace sc_core
{
@@ -43,12 +50,12 @@ class sc_event_or_list;
class sc_prim_channel : public sc_object
{
public:
- virtual const char *kind() const;
+ virtual const char *kind() const { return "sc_prim_channel"; }
protected:
sc_prim_channel();
explicit sc_prim_channel(const char *);
- virtual ~sc_prim_channel() {}
+ virtual ~sc_prim_channel();
void request_update();
void async_request_update();
@@ -93,6 +100,9 @@ class sc_prim_channel : public sc_object
// Disabled
sc_prim_channel(const sc_prim_channel &);
sc_prim_channel &operator = (const sc_prim_channel &);
+
+ friend class sc_gem5::Channel;
+ sc_gem5::Channel *_gem5_channel;
};
} // namespace sc_core