changeset 873634453ae0 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=873634453ae0
description:
        ARM: implement the ProcessInfo methods

diffstat:

 src/arch/arm/stacktrace.cc |  33 ++++++++++++++++++++++++++++++---
 1 files changed, 30 insertions(+), 3 deletions(-)

diffs (53 lines):

diff -r d421f95f92d9 -r 873634453ae0 src/arch/arm/stacktrace.cc
--- a/src/arch/arm/stacktrace.cc        Mon Jun 11 10:54:37 2012 -0400
+++ b/src/arch/arm/stacktrace.cc        Mon Jun 11 11:07:41 2012 -0400
@@ -74,19 +74,46 @@
     Addr
     ProcessInfo::task(Addr ksp) const
     {
-        return 0;
+        Addr base = ksp & ~0x1fff;
+        if (base == ULL(0xffffffffc0000000))
+            return 0;
+
+        Addr tsk;
+
+        FSTranslatingPortProxy &vp = tc->getVirtProxy();
+        tsk = vp.readGtoH<Addr>(base + task_off);
+
+        return tsk;
     }
 
     int
     ProcessInfo::pid(Addr ksp) const
     {
-        return -1;
+        Addr task = this->task(ksp);
+        if (!task)
+            return -1;
+
+        uint16_t pd;
+
+        FSTranslatingPortProxy &vp = tc->getVirtProxy();
+        pd = vp.readGtoH<uint16_t>(task + pid_off);
+
+        return pd;
     }
 
     string
     ProcessInfo::name(Addr ksp) const
     {
-        return "Implement me";
+        Addr task = this->task(ksp);
+        if (!task)
+            return "unknown";
+
+        char comm[256];
+        CopyStringOut(tc, comm, task + name_off, sizeof(comm));
+        if (!comm[0])
+            return "startup";
+
+        return comm;
     }
 
     StackTrace::StackTrace()
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to