process: add progName() virtual function
authorSteve Reinhardt <steve.reinhardt@amd.com>
Mon, 6 Aug 2012 23:55:34 +0000 (16:55 -0700)
committerSteve Reinhardt <steve.reinhardt@amd.com>
Mon, 6 Aug 2012 23:55:34 +0000 (16:55 -0700)
This replaces a (potentially uninitialized) string
field with a virtual function so that we can have
a safe interface without requiring changes to the
eio code.

src/cpu/inorder/cpu.cc
src/sim/process.cc
src/sim/process.hh

index f67691d0ade38b756d23a623b622e8556f854761..4aff0c579ae93b43720d2fa3ad2baaedbe1549b5 100644 (file)
@@ -290,7 +290,7 @@ InOrderCPU::InOrderCPU(Params *params)
         } else {
             if (tid < (ThreadID)params->workload.size()) {
                 DPRINTF(InOrderCPU, "Workload[%i] process is %#x\n",
-                        tid, params->workload[tid]->prog_fname);
+                        tid, params->workload[tid]->progName());
                 thread[tid] =
                     new Thread(this, tid, params->workload[tid]);
             } else {
index 72b808a1d5e8000233a505a8cb9273de4944fe22..f92fb91e291b59ad6ea461787ec9b7f48023fb86 100644 (file)
@@ -571,8 +571,6 @@ LiveProcess::LiveProcess(LiveProcessParams * params, ObjectFile *_objFile)
     __pid = params->pid;
     __ppid = params->ppid;
 
-    prog_fname = params->cmd[0];
-
     // load up symbols, if any... these may be used for debugging or
     // profiling.
     if (!debugSymbolTable) {
index cddd060fd79a173bc16ce5ae11510e220edd2b6c..be4c53dd9205fe03d100f2a6bb8fc4307a90f393 100644 (file)
@@ -110,11 +110,8 @@ class Process : public SimObject
     Addr nxm_start;
     Addr nxm_end;
 
-    std::string prog_fname;     // file name
-
     Stats::Scalar num_syscalls;       // number of syscalls executed
 
-
   protected:
     // constructor
     Process(ProcessParams *params);
@@ -177,6 +174,9 @@ class Process : public SimObject
     // Find a free context to use
     ThreadContext *findFreeContext();
 
+    // provide program name for debug messages
+    virtual const char *progName() const { return "<unknown>"; }
+
     // map simulator fd sim_fd to target fd tgt_fd
     void dup_fd(int sim_fd, int tgt_fd);
 
@@ -292,6 +292,9 @@ class LiveProcess : public Process
     inline uint64_t pid() {return __pid;}
     inline uint64_t ppid() {return __ppid;}
 
+    // provide program name for debug messages
+    virtual const char *progName() const { return argv[0].c_str(); }
+
     std::string
     fullPath(const std::string &filename)
     {