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

Авторство
  Copyright SayoriOS Team (c) 2022-2024

См. определение в файле 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