107 : m_simc( simc ) { assert( simc != 0 ); }
114 std::size_t stack_size,
sc_cor_fn* fn,
void* arg ) = 0;
127 virtual void go(
sc_cor* next_cor ) = 0;
virtual void increment_counter()=0
Increment the lock counter.
virtual sc_cor * create(std::size_t stack_size, sc_cor_fn *fn, void *arg)=0
virtual bool is_unlocked()=0
Check whether the kernel lock is released.
sc_cor_pkg(sc_simcontext *simc)
virtual void acquire_sched_mutex()=0
Acquire the kernel lock.
virtual bool is_not_owner()=0
Check whether the kernel lock is not owned by this coroutine.
Coroutine package abstract base class.
sc_simcontext * simcontext()
virtual unsigned int get_counter()=0
Get the value of the lock counter.
virtual sc_cor * get_main()=0
Coroutine abstract base class.
virtual void stack_protect(bool)
virtual bool is_locked_and_owner()=0
Check whether the kernel lock is acquired and owned by this coroutine.
virtual void * get_thread_specific()=0
Get the thread specific data value.
virtual void join(sc_cor *join_cor)=0
virtual void yield(sc_cor *next_cor)=0
virtual void decrement_counter()=0
Decrement the lock counter.
virtual bool is_lock_owner()=0
Check whether the kernel lock is owned by this coroutine.
virtual bool is_locked()=0
Check whether the kernel lock is acquired.
void( sc_cor_fn)(void *)
Function type for creating coroutines.
virtual void release_sched_mutex()=0
Release the kernel lock.
virtual void abort(sc_cor *next_cor)=0
virtual void go(sc_cor *next_cor)=0
Resume the next coroutine.
virtual void set_thread_specific(void *process_b)=0
Set the thread specific data value.
virtual void wait(sc_cor *cur_cor)=0
Suspend the current coroutine.