24.22.6.2. gem5 ThreadState
Owned one per ThreadContext
.
Many ThreadContext
methods simply forward to ThreadState
implementations.
SimpleThread
inherits from ThreadState
, and forwards to it on several methods e.g.:
int cpuId() const override { return ThreadState::cpuId(); } uint32_t socketId() const override { return ThreadState::socketId(); } int threadId() const override { return ThreadState::threadId(); } void setThreadId(int id) override { ThreadState::setThreadId(id); } ContextID contextId() const override { return ThreadState::contextId(); } void setContextId(ContextID id) override { ThreadState::setContextId(id); }
O3ThreadContext
on the other hand contains an O3ThreadState
:
template <class Impl> struct O3ThreadState : public ThreadState
at:
template <class Impl> class O3ThreadContext : public ThreadContext { O3ThreadState<Impl> *thread ContextID contextId() const override { return thread->contextId(); } void setContextId(ContextID id) override { thread->setContextId(id); }