stacktrace.cc (12644:ee5e0c83e7fb) stacktrace.cc (13893:0e863b6c441a)
1/*
2 * Copyright (c) 2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 40 unchanged lines hidden (view full) ---

49 : tc(_tc)
50{
51 Addr addr = 0;
52 FSTranslatingPortProxy &vp = tc->getVirtProxy();
53 SymbolTable *symtab = tc->getSystemPtr()->kernelSymtab;
54
55 if (!symtab->findAddress("thread_info_size", addr))
56 panic("thread info not compiled into kernel\n");
1/*
2 * Copyright (c) 2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 40 unchanged lines hidden (view full) ---

49 : tc(_tc)
50{
51 Addr addr = 0;
52 FSTranslatingPortProxy &vp = tc->getVirtProxy();
53 SymbolTable *symtab = tc->getSystemPtr()->kernelSymtab;
54
55 if (!symtab->findAddress("thread_info_size", addr))
56 panic("thread info not compiled into kernel\n");
57 thread_info_size = vp.readGtoH<int32_t>(addr);
57 thread_info_size = vp.read<int32_t>(addr, GuestByteOrder);
58
59 if (!symtab->findAddress("task_struct_size", addr))
60 panic("thread info not compiled into kernel\n");
58
59 if (!symtab->findAddress("task_struct_size", addr))
60 panic("thread info not compiled into kernel\n");
61 task_struct_size = vp.readGtoH<int32_t>(addr);
61 task_struct_size = vp.read<int32_t>(addr, GuestByteOrder);
62
63 if (!symtab->findAddress("thread_info_task", addr))
64 panic("thread info not compiled into kernel\n");
62
63 if (!symtab->findAddress("thread_info_task", addr))
64 panic("thread info not compiled into kernel\n");
65 task_off = vp.readGtoH<int32_t>(addr);
65 task_off = vp.read<int32_t>(addr, GuestByteOrder);
66
67 if (!symtab->findAddress("task_struct_pid", addr))
68 panic("thread info not compiled into kernel\n");
66
67 if (!symtab->findAddress("task_struct_pid", addr))
68 panic("thread info not compiled into kernel\n");
69 pid_off = vp.readGtoH<int32_t>(addr);
69 pid_off = vp.read<int32_t>(addr, GuestByteOrder);
70
71 if (!symtab->findAddress("task_struct_comm", addr))
72 panic("thread info not compiled into kernel\n");
70
71 if (!symtab->findAddress("task_struct_comm", addr))
72 panic("thread info not compiled into kernel\n");
73 name_off = vp.readGtoH<int32_t>(addr);
73 name_off = vp.read<int32_t>(addr, GuestByteOrder);
74}
75
76Addr
77ProcessInfo::task(Addr ksp) const
78{
79 Addr base = ksp & ~0x3fff;
80 if (base == ULL(0xfffffc0000000000))
81 return 0;
82
83 Addr tsk;
84
85 FSTranslatingPortProxy &vp = tc->getVirtProxy();
74}
75
76Addr
77ProcessInfo::task(Addr ksp) const
78{
79 Addr base = ksp & ~0x3fff;
80 if (base == ULL(0xfffffc0000000000))
81 return 0;
82
83 Addr tsk;
84
85 FSTranslatingPortProxy &vp = tc->getVirtProxy();
86 tsk = vp.readGtoH<Addr>(base + task_off);
86 tsk = vp.read<Addr>(base + task_off, GuestByteOrder);
87
88 return tsk;
89}
90
91int
92ProcessInfo::pid(Addr ksp) const
93{
94 Addr task = this->task(ksp);
95 if (!task)
96 return -1;
97
98 uint16_t pd;
99
100 FSTranslatingPortProxy &vp = tc->getVirtProxy();
87
88 return tsk;
89}
90
91int
92ProcessInfo::pid(Addr ksp) const
93{
94 Addr task = this->task(ksp);
95 if (!task)
96 return -1;
97
98 uint16_t pd;
99
100 FSTranslatingPortProxy &vp = tc->getVirtProxy();
101 pd = vp.readGtoH<uint16_t>(task + pid_off);
101 pd = vp.read<uint16_t>(task + pid_off, GuestByteOrder);
102
103 return pd;
104}
105
106string
107ProcessInfo::name(Addr ksp) const
108{
109 Addr task = this->task(ksp);

--- 255 unchanged lines hidden ---
102
103 return pd;
104}
105
106string
107ProcessInfo::name(Addr ksp) const
108{
109 Addr task = this->task(ksp);

--- 255 unchanged lines hidden ---