クラス sc_core::sc_cthread_process

#include <sc_cthread_process.h>

sc_core::sc_cthread_processに対する継承グラフ

Inheritance graph
[凡例]

すべてのメンバ一覧

Public メソッド

 sc_cthread_process (const char *name_p, bool free_host, SC_ENTRY_FUNC method_p, sc_process_host *host_p, const sc_spawn_options *opt_p)
virtual ~sc_cthread_process ()
virtual void dont_initialize (bool dont)
virtual const char * kind () const

Protected メソッド

sc_cthread_handle next_exist ()
void set_next_exist (sc_cthread_handle next_p)

Private メソッド

 sc_cthread_process (const char *nm, SC_ENTRY_FUNC fn, sc_process_host *host)
virtual void prepare_for_simulation ()
bool eval_watchlist ()
bool eval_watchlist_curr_level ()
void wait_halt ()

フレンド

class sc_module
class sc_process_handle
class sc_process_table
class sc_thread_process
class sc_simcontext
void wait (sc_simcontext *)
void wait (const sc_event &, sc_simcontext *)
void wait (sc_event_or_list &, sc_simcontext *)
void wait (sc_event_and_list &, sc_simcontext *)
void wait (const sc_time &, sc_simcontext *)
void wait (const sc_time &, const sc_event &, sc_simcontext *)
void wait (const sc_time &, sc_event_or_list &, sc_simcontext *)
void wait (const sc_time &, sc_event_and_list &, sc_simcontext *)
void sc_cthread_cor_fn (void *)
void halt (sc_simcontext *)
void wait (int, sc_simcontext *)


説明

sc_cthread_process.h85 行で定義されています。


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

sc_core::sc_cthread_process::sc_cthread_process ( const char *  name_p,
bool  free_host,
SC_ENTRY_FUNC  method_p,
sc_process_host host_p,
const sc_spawn_options opt_p 
)

sc_cthread_process.cpp132 行で定義されています。

00135  :
00136     sc_thread_process(name_p, free_host, method_p, host_p, opt_p)
00137 {
00138     m_dont_init = false;
00139     m_process_kind = SC_CTHREAD_PROC_;
00140 }

sc_core::sc_cthread_process::~sc_cthread_process (  )  [virtual]

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

00148 {
00149 }

sc_core::sc_cthread_process::sc_cthread_process ( const char *  nm,
SC_ENTRY_FUNC  fn,
sc_process_host host 
) [private]


関数

void sc_core::sc_cthread_process::dont_initialize ( bool  dont  )  [virtual]

sc_core::sc_process_bを再定義しています。

sc_cthread_process.cpp107 行で定義されています。

00108 {
00109     SC_REPORT_WARNING( SC_ID_DONT_INITIALIZE_, 0 );
00110 }

virtual const char* sc_core::sc_cthread_process::kind (  )  const [inline, virtual]

sc_core::sc_thread_processを再定義しています。

sc_cthread_process.h122 行で定義されています。

00123         { return "sc_cthread_process"; }

sc_cthread_handle sc_core::sc_cthread_process::next_exist (  )  [inline, protected]

sc_core::sc_thread_processを再定義しています。

sc_cthread_process.h149 行で定義されています。

00150 {
00151     return (sc_cthread_handle)m_exist_p;
00152 }

void sc_core::sc_cthread_process::set_next_exist ( sc_cthread_handle  next_p  )  [inline, protected]

sc_cthread_process.h154 行で定義されています。

00155 {
00156     m_exist_p = next_p;
00157 }

void sc_core::sc_cthread_process::prepare_for_simulation (  )  [private, virtual]

sc_core::sc_thread_processを再定義しています。

sc_cthread_process.cpp119 行で定義されています。

00120 {
00121     m_cor_p = simcontext()->cor_pkg()->create( m_stack_size,
00122                          sc_cthread_cor_fn, this );
00123     m_cor_p->stack_protect( true );
00124 }

bool sc_core::sc_cthread_process::eval_watchlist (  )  [private]

bool sc_core::sc_cthread_process::eval_watchlist_curr_level (  )  [private]

void sc_core::sc_cthread_process::wait_halt (  )  [inline, private]

sc_cthread_process.h163 行で定義されています。

00164 {
00165     m_wait_cycle_n = 0;
00166     suspend_me();
00167     throw sc_halt();
00168 }


フレンドと関連する関数

friend class sc_module [friend]

sc_core::sc_thread_processを再定義しています。

sc_cthread_process.h87 行で定義されています。

friend class sc_process_handle [friend]

sc_core::sc_thread_processを再定義しています。

sc_cthread_process.h88 行で定義されています。

friend class sc_process_table [friend]

sc_core::sc_thread_processを再定義しています。

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

friend class sc_thread_process [friend]

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

friend class sc_simcontext [friend]

sc_core::sc_thread_processを再定義しています。

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

void wait ( sc_simcontext  )  [friend]

sc_core::sc_thread_processを再定義しています。

void wait ( const sc_event ,
sc_simcontext  
) [friend]

sc_core::sc_thread_processを再定義しています。

void wait ( sc_event_or_list ,
sc_simcontext  
) [friend]

sc_core::sc_thread_processを再定義しています。

void wait ( sc_event_and_list ,
sc_simcontext  
) [friend]

sc_core::sc_thread_processを再定義しています。

void wait ( const sc_time ,
sc_simcontext  
) [friend]

sc_core::sc_thread_processを再定義しています。

void wait ( const sc_time ,
const sc_event ,
sc_simcontext  
) [friend]

sc_core::sc_thread_processを再定義しています。

void wait ( const sc_time ,
sc_event_or_list ,
sc_simcontext  
) [friend]

sc_core::sc_thread_processを再定義しています。

void wait ( const sc_time ,
sc_event_and_list ,
sc_simcontext  
) [friend]

sc_core::sc_thread_processを再定義しています。

void sc_cthread_cor_fn ( void *   )  [friend]

sc_core::sc_thread_processを再定義しています。

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

00064 {
00065     sc_cthread_handle cthread_h = RCAST<sc_cthread_handle>( arg );
00066 
00067     // EXECUTE THE CTHREAD AND PROCESS ANY EXCEPTIONS THAT ARE THROWN:
00068     //
00069     // We set the wait state to unknown before invoking the semantics
00070     // in case we are reset, since the wait state will not be cleared, 
00071     // since that happens only if we are not reset.
00072 
00073     while( true ) {
00074 
00075         try {
00076             cthread_h->semantics();
00077         }
00078         catch( sc_user ) {
00079             continue;
00080         }
00081         catch( sc_halt ) {
00082             ::std::cout << "Terminating process "
00083                       << cthread_h->name() << ::std::endl;
00084         }
00085         catch( const sc_report& ex ) {
00086             ::std::cout << "\n" << ex.what() << ::std::endl;
00087             cthread_h->simcontext()->set_error();
00088         }
00089 
00090         break;
00091     }
00092 
00093     // SCHEDULE THREAD FOR DESTRUCTION:
00094     //
00095     // If control reaches this point the process semantics have returned
00096     // so the process should die.
00097 
00098     cthread_h->kill_process();
00099 
00100 }

void halt ( sc_simcontext  )  [friend]

void wait ( int  ,
sc_simcontext  
) [friend]


このクラスの説明は次のファイルから生成されました:

SystemCに対してFri Jun 6 20:11:58 2008に生成されました。  doxygen 1.5.6