diff --git a/kern/tru64/tru64_system.cc b/kern/tru64/tru64_system.cc index f6f147d07..5ec62b9ca 100644 --- a/kern/tru64/tru64_system.cc +++ b/kern/tru64/tru64_system.cc @@ -164,6 +164,9 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, sosendBin = new Statistics::MainBin(name() + " sosend"); fnBins.insert(make_pair("sosend", sosendBin)); + tcpSosendBin = new Statistics::MainBin(name() + " tcp_sosend"); + fnBins.insert(make_pair("tcp_sosend", tcpSosendBin)); + tcpOutputBin = new Statistics::MainBin(name() + " tcp_output"); fnBins.insert(make_pair("tcp_output", tcpOutputBin)); @@ -226,6 +229,7 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, sooWriteEvent = new FnEvent(&pcEventQueue, "soo_write", this); senditEvent = new FnEvent(&pcEventQueue, "sendit", this); sosendEvent = new FnEvent(&pcEventQueue, "sosend", this); + tcpSosendEvent = new FnEvent(&pcEventQueue, "tcp_sosend", this); tcpOutputEvent = new FnEvent(&pcEventQueue, "tcp_output", this); ipOutputEvent = new FnEvent(&pcEventQueue, "ip_output", this); etherOutputEvent = new FnEvent(&pcEventQueue, "ether_output", this); @@ -405,6 +409,11 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, else panic("could not find kernel symbol \'sosend\'"); + if (kernelSymtab->findAddress("tcp_sosend", addr)) + tcpSosendEvent->schedule(addr); + else + panic("could not find kernel symbol \'tcp_sosend\'"); + if (kernelSymtab->findAddress("tcp_output", addr)) tcpOutputEvent->schedule(addr); else @@ -466,10 +475,13 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param, populateMap("soreceive", "soo_read"); populateMap("write", ""); - populateMap("sendit", "write"); + populateMap("osend", ""); + populateMap("soo_write", "write"); + populateMap("sendit", "osend"); populateMap("sosend", "sendit"); - - populateMap("tcp_output", ""); + populateMap("sosend", "soo_write"); + populateMap("tcp_sosend", "sosend"); + populateMap("tcp_output", "tcp_sosend"); populateMap("ip_output", "tcp_output"); populateMap("ether_output", "ip_output"); populateMap("es_start", "ether_output"); @@ -524,6 +536,7 @@ Tru64System::~Tru64System() delete sooWriteEvent; delete senditEvent; delete sosendEvent; + delete tcpSosendEvent; delete tcpOutputEvent; delete ipOutputEvent; delete etherOutputEvent; diff --git a/kern/tru64/tru64_system.hh b/kern/tru64/tru64_system.hh index 42107494f..1240479dd 100644 --- a/kern/tru64/tru64_system.hh +++ b/kern/tru64/tru64_system.hh @@ -87,6 +87,7 @@ class Tru64System : public System Statistics::MainBin *sooWriteBin; Statistics::MainBin *senditBin; Statistics::MainBin *sosendBin; + Statistics::MainBin *tcpSosendBin; Statistics::MainBin *tcpOutputBin; Statistics::MainBin *ipOutputBin; Statistics::MainBin *etherOutputBin; @@ -130,6 +131,7 @@ class Tru64System : public System FnEvent *sooWriteEvent; FnEvent *senditEvent; FnEvent *sosendEvent; + FnEvent *tcpSosendEvent; FnEvent *tcpOutputEvent; FnEvent *ipOutputEvent; FnEvent *etherOutputEvent;