Realm
A distributed, event-based tasking library
Loading...
Searching...
No Matches
Realm::Thread Class Referenceabstract

#include <threads.h>

Collaboration diagram for Realm::Thread:

Classes

class  ExceptionHandlerPresence
 

Public Types

enum  State {
  STATE_CREATED , STATE_STARTUP , STATE_RUNNING , STATE_BLOCKING ,
  STATE_BLOCKED , STATE_ALERTED , STATE_READY , STATE_FINISHED ,
  STATE_DELETED
}
 
enum  Signal { TSIG_NONE , TSIG_SHOW_BACKTRACE , TSIG_INTERRUPT }
 

Public Member Functions

virtual ~Thread (void)
 
State get_state (void)
 
void signal (Signal sig, bool asynchronous)
 
Signal pop_signal (void)
 
void process_signals (void)
 
virtual void join (void)=0
 
virtual void detach (void)=0
 
void start_operation (Operation *op)
 
void stop_operation (Operation *op)
 
Operationget_operation (void) const
 
void set_priority (int new_priority)
 
bool exceptions_permitted (void) const
 
void setup_perf_counters (const ProfilingMeasurementCollection &pmc)
 
void start_perf_counters (void)
 
void stop_perf_counters (void)
 
void record_perf_counters (ProfilingMeasurementCollection &pmc)
 

Static Public Member Functions

template<typename T , void(T::*)(void) START_MTHD>
static Threadcreate_kernel_thread (T *target, const ThreadLaunchParameters &params, CoreReservation &rsrv, ThreadScheduler *_scheduler=0)
 
static Threadself (void)
 
static void abort (void)
 
static void yield (void)
 
template<typename CONDTYPE >
static void wait_for_condition (const CONDTYPE &cond, bool &poisoned)
 

Protected Member Functions

 Thread (ThreadScheduler *_scheduler)
 
Thread::State update_state (Thread::State new_state)
 
bool try_update_state (Thread::State old_state, Thread::State new_state)
 
virtual void alert_thread (void)=0
 

Static Protected Member Functions

template<typename T , void(T::*)(void) START_MTHD>
static void thread_entry_wrapper (void *obj)
 
static Threadcreate_kernel_thread_untyped (void *target, void(*entry_wrapper)(void *), const ThreadLaunchParameters &params, CoreReservation &rsrv, ThreadScheduler *_scheduler)
 

Protected Attributes

atomic< Statestate
 
ThreadSchedulerscheduler
 
Operationcurrent_op
 
int exception_handler_count
 
atomic< int > signal_count
 
Mutex signal_mutex
 
std::deque< Signalsignal_queue
 

Friends

class ThreadScheduler
 
template<class CONDTYPE >
class ThreadWaker
 

Member Enumeration Documentation

◆ Signal

Enumerator
TSIG_NONE 
TSIG_SHOW_BACKTRACE 
TSIG_INTERRUPT 

◆ State

Enumerator
STATE_CREATED 
STATE_STARTUP 
STATE_RUNNING 
STATE_BLOCKING 
STATE_BLOCKED 
STATE_ALERTED 
STATE_READY 
STATE_FINISHED 
STATE_DELETED 

Constructor & Destructor Documentation

◆ Thread()

Realm::Thread::Thread ( ThreadScheduler _scheduler)
protected

◆ ~Thread()

virtual Realm::Thread::~Thread ( void  )
virtual

Member Function Documentation

◆ abort()

static void Realm::Thread::abort ( void  )
static

◆ alert_thread()

virtual void Realm::Thread::alert_thread ( void  )
protectedpure virtual

◆ create_kernel_thread()

template<typename T , void(T::*)(void) START_MTHD>
static Thread * Realm::Thread::create_kernel_thread ( T *  target,
const ThreadLaunchParameters params,
CoreReservation rsrv,
ThreadScheduler _scheduler = 0 
)
static

◆ create_kernel_thread_untyped()

static Thread * Realm::Thread::create_kernel_thread_untyped ( void *  target,
void(*)(void *)  entry_wrapper,
const ThreadLaunchParameters params,
CoreReservation rsrv,
ThreadScheduler _scheduler 
)
staticprotected

◆ detach()

virtual void Realm::Thread::detach ( void  )
pure virtual

◆ exceptions_permitted()

bool Realm::Thread::exceptions_permitted ( void  ) const

◆ get_operation()

Operation * Realm::Thread::get_operation ( void  ) const

◆ get_state()

State Realm::Thread::get_state ( void  )

◆ join()

virtual void Realm::Thread::join ( void  )
pure virtual

◆ pop_signal()

Signal Realm::Thread::pop_signal ( void  )

◆ process_signals()

void Realm::Thread::process_signals ( void  )

◆ record_perf_counters()

void Realm::Thread::record_perf_counters ( ProfilingMeasurementCollection pmc)

◆ self()

static Thread * Realm::Thread::self ( void  )
static

◆ set_priority()

void Realm::Thread::set_priority ( int  new_priority)

◆ setup_perf_counters()

void Realm::Thread::setup_perf_counters ( const ProfilingMeasurementCollection pmc)

◆ signal()

void Realm::Thread::signal ( Signal  sig,
bool  asynchronous 
)

◆ start_operation()

void Realm::Thread::start_operation ( Operation op)

◆ start_perf_counters()

void Realm::Thread::start_perf_counters ( void  )

◆ stop_operation()

void Realm::Thread::stop_operation ( Operation op)

◆ stop_perf_counters()

void Realm::Thread::stop_perf_counters ( void  )

◆ thread_entry_wrapper()

template<typename T , void(T::*)(void) START_MTHD>
static void Realm::Thread::thread_entry_wrapper ( void *  obj)
staticprotected

◆ try_update_state()

bool Realm::Thread::try_update_state ( Thread::State  old_state,
Thread::State  new_state 
)
protected

◆ update_state()

Thread::State Realm::Thread::update_state ( Thread::State  new_state)
protected

◆ wait_for_condition()

template<typename CONDTYPE >
static void Realm::Thread::wait_for_condition ( const CONDTYPE &  cond,
bool &  poisoned 
)
static

◆ yield()

static void Realm::Thread::yield ( void  )
static

Friends And Related Symbol Documentation

◆ ThreadScheduler

friend class ThreadScheduler
friend

◆ ThreadWaker

template<class CONDTYPE >
friend class ThreadWaker
friend

Member Data Documentation

◆ current_op

Operation* Realm::Thread::current_op
protected

◆ exception_handler_count

int Realm::Thread::exception_handler_count
protected

◆ scheduler

ThreadScheduler* Realm::Thread::scheduler
protected

◆ signal_count

atomic<int> Realm::Thread::signal_count
protected

◆ signal_mutex

Mutex Realm::Thread::signal_mutex
protected

◆ signal_queue

std::deque<Signal> Realm::Thread::signal_queue
protected

◆ state

atomic<State> Realm::Thread::state
protected

The documentation for this class was generated from the following file: