thread_state.hh (5499:8bfc7650c344) | thread_state.hh (5712:199d31b47f7b) |
---|---|
1/* 2 * Copyright (c) 2006 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; --- 20 unchanged lines hidden (view full) --- 29 */ 30 31#ifndef __CPU_THREAD_STATE_HH__ 32#define __CPU_THREAD_STATE_HH__ 33 34#include "arch/types.hh" 35#include "cpu/profile.hh" 36#include "cpu/thread_context.hh" | 1/* 2 * Copyright (c) 2006 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; --- 20 unchanged lines hidden (view full) --- 29 */ 30 31#ifndef __CPU_THREAD_STATE_HH__ 32#define __CPU_THREAD_STATE_HH__ 33 34#include "arch/types.hh" 35#include "cpu/profile.hh" 36#include "cpu/thread_context.hh" |
37#include "cpu/base.hh" |
|
37 38#if !FULL_SYSTEM 39#include "mem/mem_object.hh" 40#include "sim/process.hh" 41#endif 42 43#if FULL_SYSTEM 44class EndQuiesceEvent; 45class FunctionProfile; 46class ProfileNode; 47namespace TheISA { 48 namespace Kernel { 49 class Statistics; 50 }; 51}; 52#endif 53 | 38 39#if !FULL_SYSTEM 40#include "mem/mem_object.hh" 41#include "sim/process.hh" 42#endif 43 44#if FULL_SYSTEM 45class EndQuiesceEvent; 46class FunctionProfile; 47class ProfileNode; 48namespace TheISA { 49 namespace Kernel { 50 class Statistics; 51 }; 52}; 53#endif 54 |
54class BaseCPU; | |
55class Checkpoint; 56class Port; 57class TranslatingPort; 58 59/** 60 * Struct for holding general thread state that is needed across CPU 61 * models. This includes things such as pointers to the process, 62 * memory, quiesce events, and certain stats. This can be expanded 63 * to hold more thread-specific stats within it. 64 */ 65struct ThreadState { 66 typedef ThreadContext::Status Status; 67 68#if FULL_SYSTEM | 55class Checkpoint; 56class Port; 57class TranslatingPort; 58 59/** 60 * Struct for holding general thread state that is needed across CPU 61 * models. This includes things such as pointers to the process, 62 * memory, quiesce events, and certain stats. This can be expanded 63 * to hold more thread-specific stats within it. 64 */ 65struct ThreadState { 66 typedef ThreadContext::Status Status; 67 68#if FULL_SYSTEM |
69 ThreadState(BaseCPU *cpu, int _cpuId, int _tid); | 69 ThreadState(BaseCPU *cpu, int _tid); |
70#else | 70#else |
71 ThreadState(BaseCPU *cpu, int _cpuId, int _tid, Process *_process, | 71 ThreadState(BaseCPU *cpu, int _tid, Process *_process, |
72 short _asid); 73#endif 74 75 ~ThreadState(); 76 77 void serialize(std::ostream &os); 78 79 void unserialize(Checkpoint *cp, const std::string §ion); 80 | 72 short _asid); 73#endif 74 75 ~ThreadState(); 76 77 void serialize(std::ostream &os); 78 79 void unserialize(Checkpoint *cp, const std::string §ion); 80 |
81 void setCpuId(int id) { cpuId = id; } | 81 int cpuId() { return baseCpu->cpuId(); } |
82 | 82 |
83 int readCpuId() { return cpuId; } 84 | |
85 void setTid(int id) { tid = id; } 86 87 int readTid() { return tid; } 88 89 Tick readLastActivate() { return lastActivate; } 90 91 Tick readLastSuspend() { return lastSuspend; } 92 --- 73 unchanged lines hidden (view full) --- 166 Counter startNumLoad; 167 168 protected: 169 ThreadContext::Status _status; 170 171 // Pointer to the base CPU. 172 BaseCPU *baseCpu; 173 | 83 void setTid(int id) { tid = id; } 84 85 int readTid() { return tid; } 86 87 Tick readLastActivate() { return lastActivate; } 88 89 Tick readLastSuspend() { return lastSuspend; } 90 --- 73 unchanged lines hidden (view full) --- 164 Counter startNumLoad; 165 166 protected: 167 ThreadContext::Status _status; 168 169 // Pointer to the base CPU. 170 BaseCPU *baseCpu; 171 |
174 // ID of this context w.r.t. the System or Process object to which 175 // it belongs. For full-system mode, this is the system CPU ID. 176 int cpuId; 177 | |
178 // Index of hardware thread context on the CPU that this represents. 179 int tid; 180 181 public: 182 /** Last time activate was called on this thread. */ 183 Tick lastActivate; 184 185 /** Last time suspend was called on this thread. */ --- 71 unchanged lines hidden --- | 172 // Index of hardware thread context on the CPU that this represents. 173 int tid; 174 175 public: 176 /** Last time activate was called on this thread. */ 177 Tick lastActivate; 178 179 /** Last time suspend was called on this thread. */ --- 71 unchanged lines hidden --- |