Hoa Nguyen has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/36436 )
Change subject: dev,stats: Update stats style for CopyEngine and IdeDisk
......................................................................
dev,stats: Update stats style for CopyEngine and IdeDisk
Change-Id: Ib757b00864bc144b20adef974e3443ddba2945f0
Signed-off-by: Hoa Nguyen <hoangu...@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36436
Reviewed-by: Gabe Black <gabe.bl...@gmail.com>
Maintainer: Bobby R. Bruce <bbr...@ucdavis.edu>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/dev/pci/copy_engine.cc
M src/dev/pci/copy_engine.hh
M src/dev/storage/ide_disk.cc
M src/dev/storage/ide_disk.hh
4 files changed, 50 insertions(+), 67 deletions(-)
Approvals:
Gabe Black: Looks good to me, approved
Bobby R. Bruce: Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/dev/pci/copy_engine.cc b/src/dev/pci/copy_engine.cc
index 5673e63..02d3d86 100644
--- a/src/dev/pci/copy_engine.cc
+++ b/src/dev/pci/copy_engine.cc
@@ -58,7 +58,8 @@
using namespace CopyEngineReg;
CopyEngine::CopyEngine(const Params &p)
- : PciDevice(p)
+ : PciDevice(p),
+ copyEngineStats(this, p.ChanCnt)
{
// All Reg regs are initialized to 0 by default
regs.chanCount = p.ChanCnt;
@@ -425,23 +426,20 @@
}
}
-void
-CopyEngine::regStats()
+CopyEngine::
+CopyEngineStats::CopyEngineStats(Stats::Group *parent,
+ const uint8_t &channel_count)
+ : Stats::Group(parent, "CopyEngine"),
+ ADD_STAT(bytesCopied, "Number of bytes copied by each engine"),
+ ADD_STAT(copiesProcessed, "Number of copies processed by each
engine")
{
- PciDevice::regStats();
-
- using namespace Stats;
bytesCopied
- .init(regs.chanCount)
- .name(name() + ".bytes_copied")
- .desc("Number of bytes copied by each engine")
- .flags(total)
+ .init(channel_count)
+ .flags(Stats::total)
;
copiesProcessed
- .init(regs.chanCount)
- .name(name() + ".copies_processed")
- .desc("Number of copies processed by each engine")
- .flags(total)
+ .init(channel_count)
+ .flags(Stats::total)
;
}
@@ -521,8 +519,8 @@
cePort.dmaAction(MemCmd::WriteReq, ce->pciToDma(curDmaDesc->dest),
curDmaDesc->len, &writeCompleteEvent, copyBuffer, 0);
- ce->bytesCopied[channelId] += curDmaDesc->len;
- ce->copiesProcessed[channelId]++;
+ ce->copyEngineStats.bytesCopied[channelId] += curDmaDesc->len;
+ ce->copyEngineStats.copiesProcessed[channelId]++;
}
void
diff --git a/src/dev/pci/copy_engine.hh b/src/dev/pci/copy_engine.hh
index ec3c453..17d0eb8 100644
--- a/src/dev/pci/copy_engine.hh
+++ b/src/dev/pci/copy_engine.hh
@@ -139,8 +139,13 @@
private:
- Stats::Vector bytesCopied;
- Stats::Vector copiesProcessed;
+ struct CopyEngineStats : public Stats::Group
+ {
+ CopyEngineStats(Stats::Group *parent, const uint8_t&
channel_count);
+
+ Stats::Vector bytesCopied;
+ Stats::Vector copiesProcessed;
+ } copyEngineStats;
// device registers
CopyEngineReg::Regs regs;
@@ -158,8 +163,6 @@
CopyEngine(const Params ¶ms);
~CopyEngine();
- void regStats() override;
-
Port &getPort(const std::string &if_name,
PortID idx = InvalidPortID) override;
diff --git a/src/dev/storage/ide_disk.cc b/src/dev/storage/ide_disk.cc
index 3f29775..808c705 100644
--- a/src/dev/storage/ide_disk.cc
+++ b/src/dev/storage/ide_disk.cc
@@ -60,6 +60,7 @@
IdeDisk::IdeDisk(const Params &p)
: SimObject(p), ctrl(NULL), image(p.image), diskDelay(p.delay),
+ ideDiskStats(this),
dmaTransferEvent([this]{ doDmaTransfer(); }, name()),
dmaReadCG(NULL),
dmaReadWaitEvent([this]{ doDmaRead(); }, name()),
@@ -386,37 +387,18 @@
schedule(dmaReadWaitEvent, curTick() + totalDiskDelay);
}
-void
-IdeDisk::regStats()
+IdeDisk::
+IdeDiskStats::IdeDiskStats(Stats::Group *parent)
+ : Stats::Group(parent, "IdeDisk"),
+ ADD_STAT(dmaReadFullPages,
+ "Number of full page size DMA reads (not PRD)."),
+ ADD_STAT(dmaReadBytes,
+ "Number of bytes transfered via DMA reads (not PRD)."),
+ ADD_STAT(dmaReadTxs, "Number of DMA read transactions (not PRD)."),
+ ADD_STAT(dmaWriteFullPages, "Number of full page size DMA writes."),
+ ADD_STAT(dmaWriteBytes, "Number of bytes transfered via DMA
writes."),
+ ADD_STAT(dmaWriteTxs, "Number of DMA write transactions.")
{
- SimObject::regStats();
-
- using namespace Stats;
- dmaReadFullPages
- .name(name() + ".dma_read_full_pages")
- .desc("Number of full page size DMA reads (not PRD).")
- ;
- dmaReadBytes
- .name(name() + ".dma_read_bytes")
- .desc("Number of bytes transfered via DMA reads (not PRD).")
- ;
- dmaReadTxs
- .name(name() + ".dma_read_txs")
- .desc("Number of DMA read transactions (not PRD).")
- ;
-
- dmaWriteFullPages
- .name(name() + ".dma_write_full_pages")
- .desc("Number of full page size DMA writes.")
- ;
- dmaWriteBytes
- .name(name() + ".dma_write_bytes")
- .desc("Number of bytes transfered via DMA writes.")
- ;
- dmaWriteTxs
- .name(name() + ".dma_write_txs")
- .desc("Number of DMA write transactions.")
- ;
}
void
@@ -445,10 +427,10 @@
assert(dmaReadCG->complete() < MAX_DMA_SIZE);
ctrl->dmaRead(pciToDma(dmaReadCG->addr()), dmaReadCG->size(),
&dmaReadWaitEvent, dataBuffer + dmaReadCG->complete());
- dmaReadBytes += dmaReadCG->size();
- dmaReadTxs++;
+ ideDiskStats.dmaReadBytes += dmaReadCG->size();
+ ideDiskStats.dmaReadTxs++;
if (dmaReadCG->size() == chunkBytes)
- dmaReadFullPages++;
+ ideDiskStats.dmaReadFullPages++;
dmaReadCG->next();
} else {
assert(dmaReadCG->done());
@@ -530,10 +512,10 @@
&dmaWriteWaitEvent, dataBuffer + dmaWriteCG->complete());
DPRINTF(IdeDisk, "doDmaWrite: not done curPrd byte count %d,
eot %#x\n",
curPrd.getByteCount(), curPrd.getEOT());
- dmaWriteBytes += dmaWriteCG->size();
- dmaWriteTxs++;
+ ideDiskStats.dmaWriteBytes += dmaWriteCG->size();
+ ideDiskStats.dmaWriteTxs++;
if (dmaWriteCG->size() == chunkBytes)
- dmaWriteFullPages++;
+ ideDiskStats.dmaWriteFullPages++;
dmaWriteCG->next();
} else {
DPRINTF(IdeDisk, "doDmaWrite: done curPrd byte count %d,
eot %#x\n",
diff --git a/src/dev/storage/ide_disk.hh b/src/dev/storage/ide_disk.hh
index ba2bad2..a0e02ce 100644
--- a/src/dev/storage/ide_disk.hh
+++ b/src/dev/storage/ide_disk.hh
@@ -252,12 +252,17 @@
/** DMA Aborted */
bool dmaAborted;
- Stats::Scalar dmaReadFullPages;
- Stats::Scalar dmaReadBytes;
- Stats::Scalar dmaReadTxs;
- Stats::Scalar dmaWriteFullPages;
- Stats::Scalar dmaWriteBytes;
- Stats::Scalar dmaWriteTxs;
+ struct IdeDiskStats : public Stats::Group
+ {
+ IdeDiskStats(Stats::Group *parent);
+
+ Stats::Scalar dmaReadFullPages;
+ Stats::Scalar dmaReadBytes;
+ Stats::Scalar dmaReadTxs;
+ Stats::Scalar dmaWriteFullPages;
+ Stats::Scalar dmaWriteBytes;
+ Stats::Scalar dmaWriteTxs;
+ } ideDiskStats;
public:
typedef IdeDiskParams Params;
@@ -274,11 +279,6 @@
void reset(int id);
/**
- * Register Statistics
- */
- void regStats() override;
-
- /**
* Set the controller for this device
* @param c The IDE controller
*/
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/36436
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ib757b00864bc144b20adef974e3443ddba2945f0
Gerrit-Change-Number: 36436
Gerrit-PatchSet: 20
Gerrit-Owner: Hoa Nguyen <hoangu...@ucdavis.edu>
Gerrit-Reviewer: Andreas Sandberg <andreas.sandb...@arm.com>
Gerrit-Reviewer: Bobby R. Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Hoa Nguyen <hoangu...@ucdavis.edu>
Gerrit-Reviewer: Jason Lowe-Power <power...@gmail.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s