Stats updates.
dev/ide_disk.cc: dev/ide_disk.hh: Add in stats. sim/stat_control.cc: sim/stat_control.hh: Allow setup event to be called with a specific queue. --HG-- extra : convert_revision : 9310b132b70f967a198cb2e646433f3a5332671e
This commit is contained in:
parent
f9f2f8fbd0
commit
9ef831eeef
4 changed files with 48 additions and 6 deletions
|
@ -406,6 +406,39 @@ IdeDisk::regStats()
|
|||
.name(name() + ".dma_write_txs")
|
||||
.desc("Number of DMA write transactions.")
|
||||
;
|
||||
|
||||
rdBandwidth
|
||||
.name(name() + ".rdBandwidth")
|
||||
.desc("Read Bandwidth (bits/s)")
|
||||
.precision(0)
|
||||
.prereq(dmaReadBytes)
|
||||
;
|
||||
|
||||
wrBandwidth
|
||||
.name(name() + ".wrBandwidth")
|
||||
.desc("Write Bandwidth (bits/s)")
|
||||
.precision(0)
|
||||
.prereq(dmaWriteBytes)
|
||||
;
|
||||
|
||||
totBandwidth
|
||||
.name(name() + ".totBandwidth")
|
||||
.desc("Total Bandwidth (bits/s)")
|
||||
.precision(0)
|
||||
.prereq(totBytes)
|
||||
;
|
||||
|
||||
totBytes
|
||||
.name(name() + ".totBytes")
|
||||
.desc("Total Bytes")
|
||||
.precision(0)
|
||||
.prereq(totBytes)
|
||||
;
|
||||
|
||||
rdBandwidth = dmaReadBytes * Stats::constant(8) / simSeconds;
|
||||
wrBandwidth = dmaWriteBytes * Stats::constant(8) / simSeconds;
|
||||
totBandwidth = rdBandwidth + wrBandwidth;
|
||||
totBytes = dmaReadBytes + dmaWriteBytes;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -244,6 +244,10 @@ class IdeDisk : public SimObject
|
|||
Stats::Scalar<> dmaWriteFullPages;
|
||||
Stats::Scalar<> dmaWriteBytes;
|
||||
Stats::Scalar<> dmaWriteTxs;
|
||||
Stats::Formula rdBandwidth;
|
||||
Stats::Formula wrBandwidth;
|
||||
Stats::Formula totBandwidth;
|
||||
Stats::Formula totBytes;
|
||||
|
||||
public:
|
||||
/**
|
||||
|
|
|
@ -158,13 +158,13 @@ class StatEvent : public Event
|
|||
Tick repeat;
|
||||
|
||||
public:
|
||||
StatEvent(int _flags, Tick _when, Tick _repeat);
|
||||
StatEvent(EventQueue *queue, int _flags, Tick _when, Tick _repeat);
|
||||
virtual void process();
|
||||
virtual const char *description();
|
||||
};
|
||||
|
||||
StatEvent::StatEvent(int _flags, Tick _when, Tick _repeat)
|
||||
: Event(&mainEventQueue, Stat_Event_Pri),
|
||||
StatEvent::StatEvent(EventQueue *queue, int _flags, Tick _when, Tick _repeat)
|
||||
: Event(queue, Stat_Event_Pri),
|
||||
flags(_flags), repeat(_repeat)
|
||||
{
|
||||
setFlags(AutoDelete);
|
||||
|
@ -214,9 +214,12 @@ DumpNow()
|
|||
}
|
||||
|
||||
void
|
||||
SetupEvent(int flags, Tick when, Tick repeat)
|
||||
SetupEvent(int flags, Tick when, Tick repeat, EventQueue *queue)
|
||||
{
|
||||
new StatEvent(flags, when, repeat);
|
||||
if (queue == NULL)
|
||||
queue = &mainEventQueue;
|
||||
|
||||
new StatEvent(queue, flags, when, repeat);
|
||||
}
|
||||
|
||||
/* namespace Stats */ }
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#include <fstream>
|
||||
#include <list>
|
||||
|
||||
class EventQueue;
|
||||
|
||||
namespace Stats {
|
||||
|
||||
enum {
|
||||
|
@ -43,7 +45,7 @@ class Output;
|
|||
extern std::list<Output *> OutputList;
|
||||
|
||||
void DumpNow();
|
||||
void SetupEvent(int flags, Tick when, Tick repeat = 0);
|
||||
void SetupEvent(int flags, Tick when, Tick repeat = 0, EventQueue *queue = NULL);
|
||||
|
||||
void InitSimStats();
|
||||
|
||||
|
|
Loading…
Reference in a new issue