SayoriOS  0.3.3
Файл scheduler.c

Менеджер задач Подробнее...

#include "sys/scheduler.h"
#include "lib/string.h"
#include "io/ports.h"
#include "mem/vmm.h"

См. исходные тексты.

Функции

void init_task_manager (void)
 Инициализация менеджера задач
 
void scheduler_mode (bool on)
 
size_t create_process (void *entry_point, char name[256], bool suspend, bool is_kernel)
 
volatile process_t * get_current_proc (void)
 Получить текущий обработчик процесса Подробнее...
 
 __attribute__ ((noreturn))
 
thread_t * _thread_create_unwrapped (process_t *proc, void *entry_point, size_t stack_size, bool kernel, bool suspend)
 Создание потока Подробнее...
 
thread_t * thread_create (process_t *proc, void *entry_point, size_t stack_size, bool kernel, bool suspend)
 
void thread_suspend (thread_t *thread, bool suspend)
 Остановить поток Подробнее...
 
void thread_exit (thread_t *thread)
 Завершить текущий поток Подробнее...
 
bool is_multitask (void)
 Получение состояния о мультипотоке Подробнее...
 
void task_switch_v2_wrapper (__attribute__((unused)) registers_t regs)
 

Переменные

list_t process_list
 Список процессов
 
list_t thread_list
 Список потоков
 
uint32_t next_pid = 0
 Следующий ID задачи (PID)
 
uint32_t next_thread_id = 0
 Следующий ID потока
 
bool multi_task = false
 Готова ли система к многозадачности
 
process_t * kernel_proc = 0
 Обработчик процесса ядра
 
thread_t * kernel_thread = 0
 Обработчик основного потока ядра
 
process_t * current_proc = 0
 Текущий процесс
 
thread_t * current_thread = 0
 Текущий поток
 
uint32_t init_esp
 
bool scheduler_working = true
 
physical_addr_t kernel_page_directory
 

Подробное описание

Менеджер задач

Автор
Пиминов Никита (nikit.nosp@m.a.pi.nosp@m.minof.nosp@m.f@ya.nosp@m.ndex..nosp@m.ru)
Версия
0.3.5
Дата
2022-10-01

См. определение в файле scheduler.c

Функции

◆ _thread_create_unwrapped()

thread_t* _thread_create_unwrapped ( process_t *  proc,
void *  entry_point,
size_t  stack_size,
bool  kernel,
bool  suspend 
)

Создание потока

Аргументы
proc- Процесс
entry_point- Точка входа
stack_size- Размер стека
kernel- Функция ядра?
suspend- Остановлено?
Возвращает
thread_t* - Поток

См. определение в файле scheduler.c строка 147

◆ get_current_proc()

volatile process_t* get_current_proc ( void  )

Получить текущий обработчик процесса

Возвращает
process_t* - Текущий обработчик задачи

См. определение в файле scheduler.c строка 125

◆ is_multitask()

bool is_multitask ( void  )

Получение состояния о мультипотоке

Возвращает
bool - true - если готово к работе

См. определение в файле scheduler.c строка 261

◆ thread_exit()

void thread_exit ( thread_t *  thread)

Завершить текущий поток

Аргументы
thread- Поток

См. определение в файле scheduler.c строка 231

◆ thread_suspend()

void thread_suspend ( thread_t *  thread,
bool  suspend 
)

Остановить поток

Аргументы
thread- Поток
suspend- Вкл/выкл

См. определение в файле scheduler.c строка 222