Iros
 
Loading...
Searching...
No Matches
iris::Scheduler Class Reference

#include <iris/core/scheduler.h>

Public Member Functions

void schedule_task (Task &)
 
void start ()
 
void start_on_ap ()
 
void yield ()
 
void save_state_and_run_next (arch::TaskState *state)
 
void exit_current_task ()
 
auto current_task () const -> Task &
 
auto current_task_null_if_during_boot () const -> Task *
 
auto current_address_space () -> mm::AddressSpace &
 
auto block_current_task (di::FunctionRef< void()> before_yielding) -> Expected< void >
 Block the currently running task on this scheduler.
 
void setup_idle_task ()
 

Member Function Documentation

◆ block_current_task()

auto iris::Scheduler::block_current_task ( di::FunctionRef< void()> before_yielding) -> Expected<void>

Block the currently running task on this scheduler.

Parameters
before_yieldingCallback which is executed after updating the current task's state.
Returns
Returns an error if the current task was interrupted by userspace, and otherwise returns success once the task is unblocked.

◆ current_address_space()

auto iris::Scheduler::current_address_space ( ) -> mm::AddressSpace&

◆ current_task()

auto iris::Scheduler::current_task ( ) const -> Task&
inline

◆ current_task_null_if_during_boot()

auto iris::Scheduler::current_task_null_if_during_boot ( ) const -> Task*
inline

◆ exit_current_task()

void iris::Scheduler::exit_current_task ( )

◆ save_state_and_run_next()

void iris::Scheduler::save_state_and_run_next ( arch::TaskState * state)

◆ schedule_task()

void iris::Scheduler::schedule_task ( Task & task)

◆ setup_idle_task()

void iris::Scheduler::setup_idle_task ( )

◆ start()

void iris::Scheduler::start ( )

◆ start_on_ap()

void iris::Scheduler::start_on_ap ( )

◆ yield()

void iris::Scheduler::yield ( )

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