summaryrefslogtreecommitdiff
path: root/kern
diff options
context:
space:
mode:
authorLisa Hsu <hsul@eecs.umich.edu>2003-11-05 23:38:51 -0500
committerLisa Hsu <hsul@eecs.umich.edu>2003-11-05 23:38:51 -0500
commit9020491833d664070f93cfb0ddbb12923f331424 (patch)
tree301ebc3f5df8e628cbb581c686580eee3d6ef368 /kern
parentb064b8a6fda1dd3f1bd174d742cc8e452f714efe (diff)
downloadgem5-9020491833d664070f93cfb0ddbb12923f331424.tar.xz
add things to track read and soo_read for specweb.
kern/tru64/tru64_events.cc: don't need this - it was commented out anyway. kern/tru64/tru64_system.cc: generated code from instrum_codegen.pl also, populateMap with the correct orderings. kern/tru64/tru64_system.hh: generated code from instrum_codegen.pl --HG-- extra : convert_revision : 237366a4bae31a07dfc245d090a704afd2bd4833
Diffstat (limited to 'kern')
-rw-r--r--kern/tru64/tru64_events.cc2
-rw-r--r--kern/tru64/tru64_system.cc43
-rw-r--r--kern/tru64/tru64_system.hh8
3 files changed, 50 insertions, 3 deletions
diff --git a/kern/tru64/tru64_events.cc b/kern/tru64/tru64_events.cc
index bb6588e62..f542256e4 100644
--- a/kern/tru64/tru64_events.cc
+++ b/kern/tru64/tru64_events.cc
@@ -130,8 +130,6 @@ FnEvent::process(ExecContext *xc)
if (ctx && !ctx->callStack.empty()) {
fnCall *last = ctx->callStack.top();
if (!xc->system->findCaller(myname(), last->name)) {
- // assert(!xc->system->findCaller(myname(), "") &&
- // "should not have head of path in middle of stack!");
return;
}
ctx->calls--;
diff --git a/kern/tru64/tru64_system.cc b/kern/tru64/tru64_system.cc
index 6f4a0b169..f6f147d07 100644
--- a/kern/tru64/tru64_system.cc
+++ b/kern/tru64/tru64_system.cc
@@ -134,6 +134,12 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
sbappendBin = new Statistics::MainBin(name() + " sbappend");
fnBins.insert(make_pair("sbappend", sbappendBin));
+ readBin = new Statistics::MainBin(name() + " read");
+ fnBins.insert(make_pair("read", readBin));
+
+ sooReadBin = new Statistics::MainBin(name() + " soo_read");
+ fnBins.insert(make_pair("soo_read", sooReadBin));
+
orecvBin = new Statistics::MainBin(name() + " orecv");
fnBins.insert(make_pair("orecv", orecvBin));
@@ -146,6 +152,12 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
osendBin = new Statistics::MainBin(name() + " osend");
fnBins.insert(make_pair("osend", osendBin));
+ writeBin = new Statistics::MainBin(name() + " write");
+ fnBins.insert(make_pair("write", writeBin));
+
+ sooWriteBin = new Statistics::MainBin(name() + " soo_write");
+ fnBins.insert(make_pair("soo_write", sooWriteBin));
+
senditBin = new Statistics::MainBin(name() + " sendit");
fnBins.insert(make_pair("sendit", senditBin));
@@ -204,10 +216,14 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
ipReassEvent = new FnEvent(&pcEventQueue, "ip_reass", this);
tcpInputEvent = new FnEvent(&pcEventQueue, "tcp_input", this);
sbappendEvent = new FnEvent(&pcEventQueue, "sbappend", this);
+ readEvent = new FnEvent(&pcEventQueue, "read", this);
+ sooReadEvent = new FnEvent(&pcEventQueue, "soo_read", this);
orecvEvent = new FnEvent(&pcEventQueue, "orecv", this);
recvitEvent = new FnEvent(&pcEventQueue, "recvit", this);
soreceiveEvent = new FnEvent(&pcEventQueue, "soreceive", this);
osendEvent = new FnEvent(&pcEventQueue, "osend", this);
+ writeEvent = new FnEvent(&pcEventQueue, "write", this);
+ sooWriteEvent = new FnEvent(&pcEventQueue, "soo_write", this);
senditEvent = new FnEvent(&pcEventQueue, "sendit", this);
sosendEvent = new FnEvent(&pcEventQueue, "sosend", this);
tcpOutputEvent = new FnEvent(&pcEventQueue, "tcp_output", this);
@@ -339,6 +355,16 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
else
panic("could not find kernel symbol \'sbappend\'");
+ if (kernelSymtab->findAddress("read", addr))
+ readEvent->schedule(addr);
+ else
+ panic("could not find kernel symbol \'read\'");
+
+ if (kernelSymtab->findAddress("soo_read", addr))
+ sooReadEvent->schedule(addr);
+ else
+ panic("could not find kernel symbol \'soo_read\'");
+
if (kernelSymtab->findAddress("orecv", addr))
orecvEvent->schedule(addr);
else
@@ -359,6 +385,16 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
else
panic("could not find kernel symbol \'osend\'");
+ if (kernelSymtab->findAddress("write", addr))
+ writeEvent->schedule(addr);
+ else
+ panic("could not find kernel symbol \'write\'");
+
+ if (kernelSymtab->findAddress("soo_write", addr))
+ sooWriteEvent->schedule(addr);
+ else
+ panic("could not find kernel symbol \'soo_write\'");
+
if (kernelSymtab->findAddress("sendit", addr))
senditEvent->schedule(addr);
else
@@ -424,9 +460,10 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
populateMap("read", "");
populateMap("orecv", "");
- populateMap("recvit", "read");
+ populateMap("soo_read", "read");
populateMap("recvit", "orecv");
populateMap("soreceive", "recvit");
+ populateMap("soreceive", "soo_read");
populateMap("write", "");
populateMap("sendit", "write");
@@ -477,10 +514,14 @@ Tru64System::~Tru64System()
delete ipReassEvent;
delete tcpInputEvent;
delete sbappendEvent;
+ delete readEvent;
+ delete sooReadEvent;
delete orecvEvent;
delete recvitEvent;
delete soreceiveEvent;
delete osendEvent;
+ delete writeEvent;
+ delete sooWriteEvent;
delete senditEvent;
delete sosendEvent;
delete tcpOutputEvent;
diff --git a/kern/tru64/tru64_system.hh b/kern/tru64/tru64_system.hh
index 638fabf1d..42107494f 100644
--- a/kern/tru64/tru64_system.hh
+++ b/kern/tru64/tru64_system.hh
@@ -77,10 +77,14 @@ class Tru64System : public System
Statistics::MainBin *ipReassBin;
Statistics::MainBin *tcpInputBin;
Statistics::MainBin *sbappendBin;
+ Statistics::MainBin *readBin;
+ Statistics::MainBin *sooReadBin;
Statistics::MainBin *orecvBin;
Statistics::MainBin *recvitBin;
Statistics::MainBin *soreceiveBin;
Statistics::MainBin *osendBin;
+ Statistics::MainBin *writeBin;
+ Statistics::MainBin *sooWriteBin;
Statistics::MainBin *senditBin;
Statistics::MainBin *sosendBin;
Statistics::MainBin *tcpOutputBin;
@@ -116,10 +120,14 @@ class Tru64System : public System
FnEvent *ipReassEvent;
FnEvent *tcpInputEvent;
FnEvent *sbappendEvent;
+ FnEvent *readEvent;
+ FnEvent *sooReadEvent;
FnEvent *orecvEvent;
FnEvent *recvitEvent;
FnEvent *soreceiveEvent;
FnEvent *osendEvent;
+ FnEvent *writeEvent;
+ FnEvent *sooWriteEvent;
FnEvent *senditEvent;
FnEvent *sosendEvent;
FnEvent *tcpOutputEvent;