summaryrefslogtreecommitdiff
path: root/dev/ide_disk.cc
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2006-05-18 12:52:16 -0400
committerAli Saidi <saidi@eecs.umich.edu>2006-05-18 12:52:16 -0400
commit2a5cd79986b4a6d0f59e0b83837ff3d3e912dfaf (patch)
tree8a9527d8166e23220f60af0d5865a41ebaeeb8ae /dev/ide_disk.cc
parent0be3d001c9089b78e334dca6d0c7f1a178cf202f (diff)
downloadgem5-2a5cd79986b4a6d0f59e0b83837ff3d3e912dfaf.tar.xz
fix ide stats and make sinic compile after merge.
dev/ide_disk.cc: fix dma stats dev/sinic.cc: make sinic compile --HG-- extra : convert_revision : fbea04ca58f6ab52e98108f7c2b12917c2fe22d6
Diffstat (limited to 'dev/ide_disk.cc')
-rw-r--r--dev/ide_disk.cc38
1 files changed, 38 insertions, 0 deletions
diff --git a/dev/ide_disk.cc b/dev/ide_disk.cc
index 6f4234a1d..909f35c60 100644
--- a/dev/ide_disk.cc
+++ b/dev/ide_disk.cc
@@ -353,6 +353,36 @@ IdeDisk::doDmaDataRead()
dmaReadWaitEvent.schedule(curTick + totalDiskDelay);
}
+void
+IdeDisk::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
IdeDisk::doDmaRead()
@@ -373,6 +403,10 @@ IdeDisk::doDmaRead()
assert(dmaReadCG->complete() < MAX_DMA_SIZE);
ctrl->dmaRead(pciToDma(dmaReadCG->addr()), dmaReadCG->size(),
&dmaReadWaitEvent, dataBuffer + dmaReadCG->complete());
+ dmaReadBytes += dmaReadCG->size();
+ dmaReadTxs++;
+ if (dmaReadCG->size() == TheISA::PageBytes)
+ dmaReadFullPages++;
dmaReadCG->next();
} else {
assert(dmaReadCG->done());
@@ -445,6 +479,10 @@ IdeDisk::doDmaWrite()
assert(dmaWriteCG->complete() < MAX_DMA_SIZE);
ctrl->dmaWrite(pciToDma(dmaWriteCG->addr()), dmaWriteCG->size(),
&dmaWriteWaitEvent, dataBuffer + dmaWriteCG->complete());
+ dmaWriteBytes += dmaWriteCG->size();
+ dmaWriteTxs++;
+ if (dmaWriteCG->size() == TheISA::PageBytes)
+ dmaWriteFullPages++;
dmaWriteCG->next();
} else {
assert(dmaWriteCG->done());