MOS Source Code
Loading...
Searching...
No Matches
schedule.hpp File Reference
Include dependency graph for schedule.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void scheduler_init ()
char thread_state_str (thread_state_t state)
void unblock_scheduler (void)
 Unblock the scheduler, so that APs can start scheduling.
void enter_scheduler (void)
 Enter the scheduler and switch to the next thread.
void scheduler_add_thread (Thread *thread)
 Add a thread to the scheduler, so that it can be scheduled.
void scheduler_remove_thread (Thread *thread)
 Remove a thread from the scheduler.
void scheduler_wake_thread (Thread *thread)
 Wake a thread.
void reschedule (void)
 reschedule.
void blocked_reschedule (void)
 Mark the current task as blocked and reschedule.
__nodiscard bool reschedule_for_waitlist (waitlist_t *waitlist)

Function Documentation

◆ scheduler_init()

void scheduler_init ( )

Definition at line 49 of file schedule.cpp.

Referenced by mos_start_kernel().

◆ thread_state_str()

char thread_state_str ( thread_state_t state)

Definition at line 13 of file schedule.cpp.

Referenced by reschedule(), and tasks_sysfs_thread_list().

◆ unblock_scheduler()

void unblock_scheduler ( void )

Unblock the scheduler, so that APs can start scheduling.

Definition at line 59 of file schedule.cpp.

Referenced by mos_start_kernel().

◆ enter_scheduler()

void enter_scheduler ( void )

Enter the scheduler and switch to the next thread.

Definition at line 66 of file schedule.cpp.

Referenced by mos_start_kernel(), and platform_ap_entry().

Here is the call graph for this function:

◆ scheduler_add_thread()

void scheduler_add_thread ( Thread * thread)

Add a thread to the scheduler, so that it can be scheduled.

Parameters
thread

Definition at line 77 of file schedule.cpp.

Referenced by create_thread(), elf_create_process(), kthread_create(), process_do_fork(), and reschedule().

Here is the call graph for this function:

◆ scheduler_remove_thread()

void scheduler_remove_thread ( Thread * thread)

Remove a thread from the scheduler.

Parameters
thread

Definition at line 84 of file schedule.cpp.

Here is the call graph for this function:

◆ scheduler_wake_thread()

void scheduler_wake_thread ( Thread * thread)

Wake a thread.

Parameters
thread

Definition at line 90 of file schedule.cpp.

Referenced by signal_send_to_thread(), timer_do_wakeup(), and waitlist_wake().

◆ reschedule()

void reschedule ( void )

reschedule.

Warning
The caller must have the current thread's state_lock acquired.

Definition at line 106 of file schedule.cpp.

Referenced by blocked_reschedule(), enter_scheduler(), MOS_STATIC_ASSERT(), riscv64_trap_handler(), thread_exit_locked(), and x86_pit_timer_handler().

Here is the call graph for this function:

◆ blocked_reschedule()

void blocked_reschedule ( void )

Mark the current task as blocked and reschedule.

Definition at line 163 of file schedule.cpp.

Referenced by ipc_connect_to_server(), ipc_server_accept(), reschedule_for_waitlist(), and timer_msleep().

Here is the call graph for this function:

◆ reschedule_for_waitlist()

__nodiscard bool reschedule_for_waitlist ( waitlist_t * waitlist)

Definition at line 171 of file schedule.cpp.

Referenced by futex_wait(), Console::on_read(), pipe_read(), pipe_write(), process_wait_for_pid(), and thread_wait_for_tid().

Here is the call graph for this function: