30#ifndef SC_COR_PTHREAD_H
31#define SC_COR_PTHREAD_H
34#if defined(SC_USE_PTHREADS)
42class sc_cor_pkg_pthread;
52class sc_cor_pthread :
public sc_cor
60 virtual ~sc_cor_pthread();
63 static void* invoke_module_method(
void* context_p );
68 pthread_mutex_t m_mutex;
69 sc_cor_pkg_pthread* m_pkg_p;
70 pthread_cond_t m_pt_condition;
76 sc_cor_pthread(
const sc_cor_pthread& );
77 sc_cor_pthread& operator = (
const sc_cor_pthread& );
93class sc_cor_pkg_pthread
96 friend void* sc_cor_pthread::invoke_module_method(
void* context_p );
103 virtual ~sc_cor_pkg_pthread();
106 virtual sc_cor* create( std::size_t stack_size,
sc_cor_fn* fn,
void* arg );
109 virtual void yield( sc_cor* next_cor );
112 virtual void abort( sc_cor* next_cor );
115 virtual sc_cor* get_main();
119 sc_cor_pthread m_main_cor;
120 sc_cor_pthread* m_curr_cor;
121 pthread_mutex_t m_create_mtx;
122 pthread_cond_t m_create_cond;
127 sc_cor_pkg_pthread();
128 sc_cor_pkg_pthread(
const sc_cor_pkg_pthread& );
129 sc_cor_pkg_pthread& operator = (
const sc_cor_pkg_pthread& );
class SC_API sc_simcontext
sc_cor_pkg_qt sc_cor_pkg_t