track the idle_thread() function in the kernel, so that we can know if we are idle...
authorLisa Hsu <hsul@eecs.umich.edu>
Fri, 7 Nov 2003 05:14:38 +0000 (00:14 -0500)
committerLisa Hsu <hsul@eecs.umich.edu>
Fri, 7 Nov 2003 05:14:38 +0000 (00:14 -0500)
kern/tru64/tru64_system.cc:
    autogen for new tracked function

    add to fn name map
kern/tru64/tru64_system.hh:
    autogen

--HG--
extra : convert_revision : 322d54df3070824a039085dc3742660c82cf750d

kern/tru64/tru64_system.cc
kern/tru64/tru64_system.hh

index 5ec62b9ca7774ae30c152fe69858d76d493a73e1..3fa07828b0e3bb814611f7b2638a50a459e35526 100644 (file)
@@ -185,6 +185,9 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
         esTxeofBin = new Statistics::MainBin(name() + " es_txeof");
         fnBins.insert(make_pair("es_txeof", esTxeofBin));
 
+        idleThreadBin = new Statistics::MainBin(name() + " idle_thread");
+        fnBins.insert(make_pair("idle_thread", idleThreadBin));
+
     }
     //INSTRUMENTATION CODEGEN END
 #endif //FS_MEASURE
@@ -236,6 +239,7 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
           esStartEvent = new FnEvent(&pcEventQueue, "es_start", this);
           esTransmitEvent = new FnEvent(&pcEventQueue, "es_transmit", this);
           esTxeofEvent = new FnEvent(&pcEventQueue, "es_txeof", this);
+          idleThreadEvent = new FnEvent(&pcEventQueue, "idle_thread", this);
     }
     //INSTRUMENTATION CODEGEN END
 #endif //FS_MEASURE
@@ -444,6 +448,11 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
         else
             panic("could not find kernel symbol \'es_txeof\'");
 
+        if (kernelSymtab->findAddress("idle_thread", addr))
+            idleThreadEvent->schedule(addr);
+        else
+            panic("could not find kernel symbol \'idle_thread\'");
+
     }
     //INSTRUMENTATION CODEGEN END
      if (bin == true) {
@@ -488,6 +497,8 @@ Tru64System::Tru64System(const string _name, const uint64_t _init_param,
         populateMap("es_transmit", "es_start");
 
         populateMap("es_txeof", "es_intr");
+
+        populateMap("idle_thread", "");
     }
 #endif //FS_MEASURE
 }
@@ -543,6 +554,7 @@ Tru64System::~Tru64System()
         delete esStartEvent;
         delete esTransmitEvent;
         delete esTxeofEvent;
+        delete idleThreadEvent;
     }
     //INSTRUMENTATION CODEGEN END
 #endif //FS_MEASURE
index 1240479dd8eb693bdedb1191364eb4a3923db4da..93cc908e33f4f9b9da882bd63d5bb3ff05839947 100644 (file)
@@ -94,6 +94,7 @@ class Tru64System : public System
     Statistics::MainBin *esStartBin;
     Statistics::MainBin *esTransmitBin;
     Statistics::MainBin *esTxeofBin;
+    Statistics::MainBin *idleThreadBin;
     //INSTRUMENTATION CODEGEN END
 #endif //FS_MEASURE
 
@@ -138,6 +139,7 @@ class Tru64System : public System
     FnEvent *esStartEvent;
     FnEvent *esTransmitEvent;
     FnEvent *esTxeofEvent;
+    FnEvent *idleThreadEvent;
     //INSTRUMENTATION CODEGEN END
 #endif //FS_MEASURE