From 743a1b5cdd8e607f2e1bb5ad182047c512eae3f8 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 18 Jul 2018 20:59:56 -0700 Subject: systemc: Implement pending activity related functions Track the number of notifications/timeouts that are scheduled at any given time. This lets us implement sc_pending_activity_at_current_time, sc_pending_activity_at_future_time, and sc_time_to_pending_activity. Change-Id: Ia3fcd29bdbfe1a6c77eb52ce4836982d4705263c Reviewed-on: https://gem5-review.googlesource.com/12032 Reviewed-by: Gabe Black Maintainer: Gabe Black --- src/systemc/core/process.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/systemc/core/process.cc') diff --git a/src/systemc/core/process.cc b/src/systemc/core/process.cc index 7ed187fe1..ad297a23c 100644 --- a/src/systemc/core/process.cc +++ b/src/systemc/core/process.cc @@ -37,16 +37,23 @@ namespace sc_gem5 { SensitivityTimeout::SensitivityTimeout(Process *p, ::sc_core::sc_time t) : - Sensitivity(p), timeoutEvent(this), timeout(t) + Sensitivity(p), timeoutEvent(this), time(t) { - Tick when = scheduler.eventQueue().getCurTick() + timeout.value(); - scheduler.eventQueue().schedule(&timeoutEvent, when); + Tick when = scheduler.getCurTick() + time.value(); + scheduler.schedule(&timeoutEvent, when); } SensitivityTimeout::~SensitivityTimeout() { if (timeoutEvent.scheduled()) - scheduler.eventQueue().deschedule(&timeoutEvent); + scheduler.deschedule(&timeoutEvent); +} + +void +SensitivityTimeout::timeout() +{ + scheduler.eventHappened(); + notify(); } SensitivityEvent::SensitivityEvent( -- cgit v1.2.3