From 8421362cc23a6341e44ce59f2c4f578438fd8a55 Mon Sep 17 00:00:00 2001 From: Sean Wilson Date: Wed, 7 Jun 2017 15:02:52 -0500 Subject: mem: Replace EventWrapper use with EventFunctionWrapper NOTE: With this change there is a possibility for `DRAMCtrl::Rank`s event names to not properly match the rank they were generated by. This could occur if the public rank member is modified after the Rank's construction. A patch would mean refactoring Rank and `DRAMCtrl`b to privatize many of the members of Rank behind getters. Change-Id: I7b8bd15086f4ffdfd3f40be4aeddac5e786fd78e Signed-off-by: Sean Wilson Reviewed-on: https://gem5-review.googlesource.com/3745 Reviewed-by: Jason Lowe-Power Reviewed-by: Anthony Gutierrez Reviewed-by: Nikos Nikoleris Maintainer: Nikos Nikoleris --- src/mem/dram_ctrl.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/mem/dram_ctrl.cc') diff --git a/src/mem/dram_ctrl.cc b/src/mem/dram_ctrl.cc index 9e5c00b0e..da494a1d2 100644 --- a/src/mem/dram_ctrl.cc +++ b/src/mem/dram_ctrl.cc @@ -63,7 +63,8 @@ DRAMCtrl::DRAMCtrl(const DRAMCtrlParams* p) : retryRdReq(false), retryWrReq(false), busState(READ), busStateNext(READ), - nextReqEvent(this), respondEvent(this), + nextReqEvent([this]{ processNextReqEvent(); }, name()), + respondEvent([this]{ processRespondEvent(); }, name()), deviceSize(p->device_size), deviceBusWidth(p->device_bus_width), burstLength(p->burst_length), deviceRowBufferSize(p->device_rowbuffer_size), @@ -1610,8 +1611,12 @@ DRAMCtrl::Rank::Rank(DRAMCtrl& _memory, const DRAMCtrlParams* _p, int rank) readEntries(0), writeEntries(0), outstandingEvents(0), wakeUpAllowedAt(0), power(_p, false), banks(_p->banks_per_rank), numBanksActive(0), actTicks(_p->activation_limit, 0), - writeDoneEvent(*this), activateEvent(*this), prechargeEvent(*this), - refreshEvent(*this), powerEvent(*this), wakeUpEvent(*this) + writeDoneEvent([this]{ processWriteDoneEvent(); }, name()), + activateEvent([this]{ processActivateEvent(); }, name()), + prechargeEvent([this]{ processPrechargeEvent(); }, name()), + refreshEvent([this]{ processRefreshEvent(); }, name()), + powerEvent([this]{ processPowerEvent(); }, name()), + wakeUpEvent([this]{ processWakeUpEvent(); }, name()) { for (int b = 0; b < _p->banks_per_rank; b++) { banks[b].bank = b; -- cgit v1.2.3