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:
Kevin Lim 2006-08-24 17:51:35 -04:00
parent f9f2f8fbd0
commit 9ef831eeef
4 changed files with 48 additions and 6 deletions

View file

@ -406,6 +406,39 @@ IdeDisk::regStats()
.name(name() + ".dma_write_txs") .name(name() + ".dma_write_txs")
.desc("Number of DMA write transactions.") .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 void

View file

@ -244,6 +244,10 @@ class IdeDisk : public SimObject
Stats::Scalar<> dmaWriteFullPages; Stats::Scalar<> dmaWriteFullPages;
Stats::Scalar<> dmaWriteBytes; Stats::Scalar<> dmaWriteBytes;
Stats::Scalar<> dmaWriteTxs; Stats::Scalar<> dmaWriteTxs;
Stats::Formula rdBandwidth;
Stats::Formula wrBandwidth;
Stats::Formula totBandwidth;
Stats::Formula totBytes;
public: public:
/** /**

View file

@ -158,13 +158,13 @@ class StatEvent : public Event
Tick repeat; Tick repeat;
public: public:
StatEvent(int _flags, Tick _when, Tick _repeat); StatEvent(EventQueue *queue, int _flags, Tick _when, Tick _repeat);
virtual void process(); virtual void process();
virtual const char *description(); virtual const char *description();
}; };
StatEvent::StatEvent(int _flags, Tick _when, Tick _repeat) StatEvent::StatEvent(EventQueue *queue, int _flags, Tick _when, Tick _repeat)
: Event(&mainEventQueue, Stat_Event_Pri), : Event(queue, Stat_Event_Pri),
flags(_flags), repeat(_repeat) flags(_flags), repeat(_repeat)
{ {
setFlags(AutoDelete); setFlags(AutoDelete);
@ -214,9 +214,12 @@ DumpNow()
} }
void 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 */ } /* namespace Stats */ }

View file

@ -32,6 +32,8 @@
#include <fstream> #include <fstream>
#include <list> #include <list>
class EventQueue;
namespace Stats { namespace Stats {
enum { enum {
@ -43,7 +45,7 @@ class Output;
extern std::list<Output *> OutputList; extern std::list<Output *> OutputList;
void DumpNow(); 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(); void InitSimStats();