28 #ifndef SC_COR_PTHREAD_H
29 #define SC_COR_PTHREAD_H
32 #if defined(SC_USE_PTHREADS)
40 class sc_cor_pkg_pthread;
55 class sc_cor_pthread :
public sc_cor
63 virtual ~sc_cor_pthread();
66 static void* invoke_module_method(
void* context_p );
69 static sc_cor_pthread* m_active_cor_p;
74 pthread_mutex_t m_mutex;
75 sc_cor_pkg_pthread* m_pkg_p;
76 pthread_cond_t m_pt_condition;
82 sc_cor_pthread(
const sc_cor_pthread& );
83 sc_cor_pthread& operator = (
const sc_cor_pthread& );
93 class sc_cor_pkg_pthread
99 sc_cor_pkg_pthread( sc_simcontext* simc );
102 virtual ~sc_cor_pkg_pthread();
105 virtual sc_cor* create( std::size_t stack_size,
sc_cor_fn* fn,
void* arg );
108 virtual void yield( sc_cor* next_cor );
111 virtual void abort( sc_cor* next_cor );
114 virtual sc_cor* get_main();
118 static int instance_count;
123 sc_cor_pkg_pthread();
124 sc_cor_pkg_pthread(
const sc_cor_pkg_pthread& );
125 sc_cor_pkg_pthread& operator = (
const sc_cor_pkg_pthread& );
153 #endif // defined(SC_USE_PTHREADS)
sc_cor_pkg_qt sc_cor_pkg_t