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

#include <tasks.h>

Inheritance diagram for Realm::KernelThreadTaskScheduler:
Collaboration diagram for Realm::KernelThreadTaskScheduler:

Public Member Functions

 KernelThreadTaskScheduler (Processor _proc, CoreReservation &_core_rsrv)
 
virtual ~KernelThreadTaskScheduler (void)
 
virtual void add_task_queue (TaskQueue *queue)
 
virtual void remove_task_queue (TaskQueue *queue)
 
virtual void start (void)
 
virtual void shutdown (void)
 
virtual void thread_starting (Thread *thread)
 
virtual void thread_terminating (Thread *thread)
 
- Public Member Functions inherited from Realm::ThreadedTaskScheduler
 ThreadedTaskScheduler (void)
 
virtual ~ThreadedTaskScheduler (void)
 
virtual void configure_bgworker (BackgroundWorkManager *manager, long long max_timeslice, int numa_domain)
 
void add_task_context (const TaskContextManager *_manager)
 
virtual void thread_blocking (Thread *thread)
 
virtual void thread_ready (Thread *thread)
 
virtual void set_thread_priority (Thread *thread, int new_priority)
 
void add_internal_task (InternalTask *itask)
 
void scheduler_loop (void)
 
void scheduler_loop_wlock (void)
 
- Public Member Functions inherited from Realm::ThreadScheduler
virtual ~ThreadScheduler (void)
 

Protected Member Functions

virtual bool execute_task (Task *task)
 
virtual void execute_internal_task (InternalTask *task)
 
virtual Threadworker_create (bool make_active)
 
virtual void worker_sleep (Thread *switch_to)
 
virtual void worker_wake (Thread *to_wake)
 
virtual void worker_terminate (Thread *switch_to)
 
virtual void wait_for_work (uint64_t old_work_counter)
 
- Protected Member Functions inherited from Realm::ThreadedTaskScheduler
Taskget_best_ready_task (int &task_priority)
 
void update_worker_count (int active_delta, int unassigned_delta, bool check=true)
 
- Protected Member Functions inherited from Realm::ThreadScheduler
Thread::State update_thread_state (Thread *thread, Thread::State new_state)
 
bool try_update_thread_state (Thread *thread, Thread::State old_state, Thread::State new_state)
 

Protected Attributes

Processor proc
 
CoreReservationcore_rsrv
 
std::set< Thread * > all_workers
 
std::set< Thread * > active_workers
 
std::set< Thread * > terminating_workers
 
std::map< Thread *, FIFOMutex::CondVar * > sleeping_threads
 
FIFOMutex::CondVar shutdown_condvar
 
- Protected Attributes inherited from Realm::ThreadedTaskScheduler
FIFOMutex lock
 
std::vector< TaskQueue * > task_queues
 
std::vector< Thread * > idle_workers
 
std::set< Thread * > blocked_workers
 
std::set< Thread * > spinning_workers
 
std::vector< const TaskContextManager * > context_managers
 
InternalTask::TaskList internal_tasks
 
ResumableQueue resumable_workers
 
std::map< Thread *, int > worker_priorities
 
atomic< bool > shutdown_flag
 
int active_worker_count
 
int unassigned_worker_count
 
WorkCounter work_counter
 
WorkCounterUpdater< TaskQueuewcu_task_queues
 
WorkCounterUpdater< ResumableQueuewcu_resume_queue
 
BackgroundWorkManager::Worker bgworker
 
atomic< bool > bgworker_interrupt
 
long long max_bgwork_timeslice
 

Additional Inherited Members

- Public Attributes inherited from Realm::ThreadedTaskScheduler
bool cfg_reuse_workers
 
int cfg_max_idle_workers
 
int cfg_min_active_workers
 
int cfg_max_active_workers
 
- Protected Types inherited from Realm::ThreadedTaskScheduler
typedef PriorityQueue< Thread *, DummyLockResumableQueue
 

Constructor & Destructor Documentation

◆ KernelThreadTaskScheduler()

Realm::KernelThreadTaskScheduler::KernelThreadTaskScheduler ( Processor  _proc,
CoreReservation _core_rsrv 
)

◆ ~KernelThreadTaskScheduler()

virtual Realm::KernelThreadTaskScheduler::~KernelThreadTaskScheduler ( void  )
virtual

Member Function Documentation

◆ add_task_queue()

virtual void Realm::KernelThreadTaskScheduler::add_task_queue ( TaskQueue queue)
virtual

Reimplemented from Realm::ThreadedTaskScheduler.

◆ execute_internal_task()

virtual void Realm::KernelThreadTaskScheduler::execute_internal_task ( InternalTask task)
protectedvirtual

◆ execute_task()

virtual bool Realm::KernelThreadTaskScheduler::execute_task ( Task task)
protectedvirtual

◆ remove_task_queue()

virtual void Realm::KernelThreadTaskScheduler::remove_task_queue ( TaskQueue queue)
virtual

Reimplemented from Realm::ThreadedTaskScheduler.

◆ shutdown()

virtual void Realm::KernelThreadTaskScheduler::shutdown ( void  )
virtual

◆ start()

virtual void Realm::KernelThreadTaskScheduler::start ( void  )
virtual

◆ thread_starting()

virtual void Realm::KernelThreadTaskScheduler::thread_starting ( Thread thread)
virtual

◆ thread_terminating()

virtual void Realm::KernelThreadTaskScheduler::thread_terminating ( Thread thread)
virtual

◆ wait_for_work()

virtual void Realm::KernelThreadTaskScheduler::wait_for_work ( uint64_t  old_work_counter)
protectedvirtual

Reimplemented from Realm::ThreadedTaskScheduler.

◆ worker_create()

virtual Thread * Realm::KernelThreadTaskScheduler::worker_create ( bool  make_active)
protectedvirtual

◆ worker_sleep()

virtual void Realm::KernelThreadTaskScheduler::worker_sleep ( Thread switch_to)
protectedvirtual

◆ worker_terminate()

virtual void Realm::KernelThreadTaskScheduler::worker_terminate ( Thread switch_to)
protectedvirtual

◆ worker_wake()

virtual void Realm::KernelThreadTaskScheduler::worker_wake ( Thread to_wake)
protectedvirtual

Member Data Documentation

◆ active_workers

std::set<Thread *> Realm::KernelThreadTaskScheduler::active_workers
protected

◆ all_workers

std::set<Thread *> Realm::KernelThreadTaskScheduler::all_workers
protected

◆ core_rsrv

CoreReservation& Realm::KernelThreadTaskScheduler::core_rsrv
protected

◆ proc

Processor Realm::KernelThreadTaskScheduler::proc
protected

◆ shutdown_condvar

FIFOMutex::CondVar Realm::KernelThreadTaskScheduler::shutdown_condvar
protected

◆ sleeping_threads

std::map<Thread *, FIFOMutex::CondVar *> Realm::KernelThreadTaskScheduler::sleeping_threads
protected

◆ terminating_workers

std::set<Thread *> Realm::KernelThreadTaskScheduler::terminating_workers
protected

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