クラス Onikiri::Thread

#include <Thread.h>

Onikiri::Threadに対する継承グラフ

Inheritance graph
[凡例]
Onikiri::Threadのコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

Public メソッド

void Activate (bool active)
void AddOpRetiredID (u64 num)
void AddOpSerialID (u64 num)
CheckpointMasterGetCheckpointMaster () const
CoreGetCore () const
PC GetFetchPC () const
InorderListGetInorderList () const
int GetLocalThreadID () const
MemDepPredIFGetMemDepPred () const
MemOrderManagerGetMemOrderManager () const
u64 GetOpRetiredID ()
u64 GetOpSerialID ()
RecovererGetRecoverer () const
RegDepPredIFGetRegDepPred () const
int GetTID (const int index)
int GetTID ()
void Initialize (InitPhase phase)
void InitializeContext (PC pc)
bool IsActive ()
void SetFetchPC (const PC &pc)
void SetLocalThreadID (int localTID)
void SetThreadCount (const int count)
 Thread ()
virtual ~Thread ()

説明

Thread.h51 行で定義されています。


コンストラクタとデストラクタ

Thread::Thread (  ) 

Thread.cpp43 行で定義されています。

00044 {
00045     m_emulator = 0;
00046     m_core = 0;
00047     m_inorderList = 0;
00048     m_checkpointMaster = 0;
00049     m_memOrderManager = 0;
00050     m_regDepPred = 0;
00051     m_memDepPred = 0;
00052     
00053     m_localTID = TID_INVALID;
00054     m_active = false;
00055     m_serialOpID = 0;
00056 }

Thread::~Thread (  )  [virtual]

Thread.cpp58 行で定義されています。

参照先 Onikiri::PhysicalResourceNode::ReleaseParam().

00059 {
00060     ReleaseParam();
00061 }

関数の呼び出しグラフ:


関数

void Thread::Activate ( bool  active  ) 

Thread.cpp133 行で定義されています。

参照元 Onikiri::Retirer::FinishThread().

00134 {
00135     m_active = active;
00136 }

Here is the caller graph for this function:

void Thread::AddOpRetiredID ( u64  num  ) 

Thread.cpp162 行で定義されています。

参照元 Onikiri::Fetcher::Update().

00163 {
00164     *m_retiredOpID = *m_retiredOpID + num;
00165 }

Here is the caller graph for this function:

void Thread::AddOpSerialID ( u64  num  ) 

Thread.cpp167 行で定義されています。

参照元 Onikiri::Fetcher::Update().

00168 {
00169     m_serialOpID += num;
00170 }

Here is the caller graph for this function:

CheckpointMaster* Onikiri::Thread::GetCheckpointMaster (  )  const [inline]

Thread.h92 行で定義されています。

参照元 Onikiri::Fetcher::CanFetch().

00092 { return m_checkpointMaster;    }

Here is the caller graph for this function:

Core* Onikiri::Thread::GetCore (  )  const [inline]

Thread.h89 行で定義されています。

参照元 Onikiri::Recoverer::RecoverBPredMiss()Onikiri::Recoverer::RecoverException()Onikiri::InorderSystem::Run().

00089 { return m_core;                }

Here is the caller graph for this function:

PC Thread::GetFetchPC (  )  const

Thread.cpp147 行で定義されています。

参照元 Onikiri::Fetcher::Evaluate()Onikiri::Fetcher::Update().

00148 {
00149     return *m_fetchPC;
00150 }

Here is the caller graph for this function:

InorderList* Onikiri::Thread::GetInorderList (  )  const [inline]

Thread.h90 行で定義されています。

参照元 Onikiri::Fetcher::CanFetch()Onikiri::Fetcher::Evaluate()Onikiri::Retirer::EvaluateCommit()Onikiri::Fetcher::Fetch()Onikiri::Op::Initialize()Onikiri::Fetcher::IsSerializingRequired()Onikiri::InorderSystem::Run().

00090 { return m_inorderList;         }

Here is the caller graph for this function:

int Thread::GetLocalThreadID (  )  const

Thread.cpp128 行で定義されています。

参照元 Onikiri::Op::Initialize().

00129 {
00130     return m_localTID;
00131 }

Here is the caller graph for this function:

MemDepPredIF* Onikiri::Thread::GetMemDepPred (  )  const [inline]

Thread.h94 行で定義されています。

参照元 Onikiri::InorderList::Initialize().

00094 { return m_memDepPred;          }

Here is the caller graph for this function:

MemOrderManager* Onikiri::Thread::GetMemOrderManager (  )  const [inline]

Thread.h91 行で定義されています。

参照元 Onikiri::Op::GetFirstConsumer()Onikiri::InorderList::Initialize()Onikiri::Op::Read()Onikiri::Recoverer::RescheduleConsumers()Onikiri::InorderSystem::Run()Onikiri::OpFinishEvent::Update()Onikiri::Op::Write().

00091 { return m_memOrderManager;     }

Here is the caller graph for this function:

u64 Thread::GetOpRetiredID (  ) 

Thread.cpp152 行で定義されています。

参照元 Onikiri::Fetcher::Fetch().

00153 {
00154     return *m_retiredOpID;
00155 }

Here is the caller graph for this function:

u64 Thread::GetOpSerialID (  ) 

Thread.cpp157 行で定義されています。

参照元 Onikiri::Fetcher::Fetch().

00158 {
00159     return m_serialOpID;
00160 }

Here is the caller graph for this function:

Recoverer* Onikiri::Thread::GetRecoverer (  )  const [inline]

Thread.h95 行で定義されています。

00095 { return m_recoverer;           }

RegDepPredIF* Onikiri::Thread::GetRegDepPred (  )  const [inline]

Thread.h93 行で定義されています。

参照元 Onikiri::InorderList::Initialize()Onikiri::InorderSystem::Run().

00093 { return m_regDepPred;          }

Here is the caller graph for this function:

int Thread::GetTID ( const int  index  )  [virtual]

Onikiri::PhysicalResourceBaseを再定義しています。

Thread.cpp118 行で定義されています。

参照先 Onikiri::PhysicalResourceBase::GetTID().

00119 {
00120     return PhysicalResourceNode::GetTID( index );
00121 }

関数の呼び出しグラフ:

int Thread::GetTID (  ) 

Thread.cpp113 行で定義されています。

参照元 InitializeContext()SetFetchPC().

00114 {
00115     return GetTID(0);
00116 }

Here is the caller graph for this function:

void Thread::Initialize ( InitPhase  phase  ) 

Thread.cpp63 行で定義されています。

参照先 Onikiri::PhysicalResourceNode::CheckNodeInitialized()Onikiri::PhysicalResourceNode::INIT_POST_CONNECTIONOnikiri::PhysicalResourceNode::INIT_PRE_CONNECTIONOnikiri::ParamExchange::LoadParam()Onikiri::CheckpointMaster::SLOT_FETCH.

00064 {
00065     if(phase == INIT_PRE_CONNECTION){
00066         LoadParam();
00067     }
00068     else if(phase == INIT_POST_CONNECTION){
00069 
00070         CheckNodeInitialized( "checkpointMaster",   m_checkpointMaster );
00071         CheckNodeInitialized( "emulator",           m_emulator );
00072         CheckNodeInitialized( "inorderList",        m_inorderList );
00073         CheckNodeInitialized( "memOrderManager",    m_memOrderManager );
00074         CheckNodeInitialized( "checkpointMaster",   m_checkpointMaster );
00075         CheckNodeInitialized( "regDepPred",         m_regDepPred );
00076         CheckNodeInitialized( "memDepPred",         m_memDepPred );
00077         CheckNodeInitialized( "core",               m_core );
00078         CheckNodeInitialized( "recoverer",          m_recoverer );
00079 
00080         // CheckpointedData 
00081         m_fetchPC.Initialize(
00082             m_checkpointMaster, 
00083             CheckpointMaster::SLOT_FETCH
00084         );
00085 
00086         m_retiredOpID.Initialize(
00087             m_checkpointMaster, 
00088             CheckpointMaster::SLOT_FETCH
00089         );
00090         m_retiredOpID.GetCurrent() = 0;
00091     }
00092 }

関数の呼び出しグラフ:

void Thread::InitializeContext ( PC  pc  ) 

Thread.cpp99 行で定義されています。

参照先 GetTID()SetFetchPC()THROW_RUNTIME_ERROROnikiri::LogicalData::tid.

00100 {
00101     int pcTID = pc.tid;
00102     if( pcTID != GetTID(0) ){
00103         THROW_RUNTIME_ERROR( 
00104             "The TID of 'pc' (%d) and the TID of this 'Thread' (%d) are different", 
00105             pcTID,
00106             GetTID(0)
00107         );
00108     }
00109 
00110     SetFetchPC( pc );
00111 }

関数の呼び出しグラフ:

bool Thread::IsActive (  ) 

Thread.cpp94 行で定義されています。

参照元 Onikiri::Retirer::FinishThread().

00095 {
00096     return m_active;
00097 }

Here is the caller graph for this function:

void Thread::SetFetchPC ( const PC pc  ) 

Thread.cpp138 行で定義されています。

参照先 ASSERTGetTID()Onikiri::LogicalData::tid.

参照元 InitializeContext()Onikiri::Recoverer::RecoverBPredMiss()Onikiri::Recoverer::RecoverByRefetch()Onikiri::Fetcher::Update().

00139 {
00140     ASSERT(
00141         pc.tid == GetTID(0),
00142         "The passed pc has invalid tid."
00143     );
00144     *m_fetchPC = pc;
00145 }

関数の呼び出しグラフ:

Here is the caller graph for this function:

void Thread::SetLocalThreadID ( int  localTID  ) 

Thread.cpp123 行で定義されています。

00124 {
00125     m_localTID = localTID;
00126 }

void Thread::SetThreadCount ( const int  count  )  [virtual]

Onikiri::PhysicalResourceBaseを再定義しています。

Thread.cpp172 行で定義されています。

参照先 Onikiri::PhysicalResourceBase::SetThreadCount()THROW_RUNTIME_ERROR.

00173 {
00174     if( count != 1 ){
00175         THROW_RUNTIME_ERROR( "The tid count of the 'Thread' class must be 1" );
00176     }
00177     PhysicalResourceNode::SetThreadCount( count );
00178 }

関数の呼び出しグラフ:


このクラスの説明は次のファイルから生成されました:
Onikiri2に対してTue Jun 18 15:23:44 2013に生成されました。  doxygen 1.4.7