|
Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
|
#include "./scheduler.h"#include "hal/acpi/hpet.h"#include "hal/apic/apic.h"#include "hal/cpu/msr.h"#include "hal/cpu/paging.h"#include "hal/cpu/register.h"#include "init/init.h"#include "libk/serial.h"#include "memory/slab.h"#include "procc/thread.h"#include "type.h"#include <hal/cpu/core.h>#include <str.h>Go to the source code of this file.
Macros | |
| #define | APIC_TIMER_MASKED (1 << 16) |
Functions | |
| scheduler_core_t * | vxGetSchedulerCore (uint16_t core) |
| INIT (Scheduler) | |
| scheduler_queue_t * | vxSchedulerGetCurrentQueue (uint16_t core) |
| static void | vxDeatachFromScheduler (scheduler_queue_t *current, bool already_locked) |
| static void | vxSaveRegister (volatile interrupt_stack_frame_t *stack, cpu_register_t *reg) |
| static void | vxRestoreRegister (volatile interrupt_stack_frame_t *stack, cpu_register_t *reg) |
| static void | vxSchedulerTick (volatile interrupt_stack_frame_t *reg) |
| static scheduler_queue_t * | vxAllocScheduler (const uint16_t core) |
| void | attach_to_scheduler (thread_t *new_thread) |
| void | vxStartScheduler (void) |
| void | sch_restore_to_next_thread (volatile interrupt_stack_frame_t *rsp, uint16_t core_id) |
Variables | |
| static struct slab_cache * | scheduler_cache = 0 |
| static scheduler_core_t | scheduler [VOXIA_MAX_CORE] = {0} |
| each_core_data | core_data [VOXIA_MAX_CORE] |
| boolean_t | g__scheduler__is__running = 0 |
| #define APIC_TIMER_MASKED (1 << 16) |
Definition at line 291 of file scheduler.c.
| void attach_to_scheduler | ( | thread_t * | new_thread | ) |
Definition at line 268 of file scheduler.c.
References core, thread::core_affinity, thread::id, LOG2_DEBUG, LOG2_ERROR, queue, thread::state, THREAD_STATE_READY, and vxAllocScheduler().
| INIT | ( | Scheduler | ) |
Definition at line 23 of file scheduler.c.
References LOG_INFO, scheduler_cache, and vxCreateSlabCache().
| void sch_restore_to_next_thread | ( | volatile interrupt_stack_frame_t * | rsp, |
| uint16_t | core_id ) |
Definition at line 305 of file scheduler.c.
References get_current_core_data(), INFLOOP, lock, msrSetFSBase(), next, paging_reload(), rsp, scheduler, spin_acquire(), spin_release(), thread::state, scheduler_queue::thread, THREAD_STATE_HAL, THREAD_STATE_READY, THREAD_STATE_RUNNING, THREAD_USER, vxDeatachFromScheduler(), and vxRestoreRegister().
Referenced by __attribute__().
|
static |
Definition at line 235 of file scheduler.c.
References core, head, lock, memset(), scheduler_queue::next_queue, queue, scheduler, scheduler_cache, spin_acquire(), spin_release(), and vxSlabAlloc().
Referenced by attach_to_scheduler().
|
static |
Definition at line 33 of file scheduler.c.
References thread::core_affinity, lock, scheduler_queue::next_queue, scheduler_queue::prev_queue, scheduler, spin_acquire(), spin_release(), and scheduler_queue::thread.
Referenced by sch_restore_to_next_thread(), and vxSchedulerTick().
| scheduler_core_t * vxGetSchedulerCore | ( | uint16_t | core | ) |
Definition at line 21 of file scheduler.c.
References core, and scheduler.
Referenced by update_core_gs().
|
static |
Definition at line 89 of file scheduler.c.
Referenced by sch_restore_to_next_thread(), and vxSchedulerTick().
|
static |
Definition at line 65 of file scheduler.c.
Referenced by vxSchedulerTick().
| scheduler_queue_t * vxSchedulerGetCurrentQueue | ( | uint16_t | core | ) |
Definition at line 29 of file scheduler.c.
References core, and scheduler.
Referenced by __attribute__(), and vxThreadExit().
|
static |
Definition at line 113 of file scheduler.c.
References thread::current_core_id, thread::entry_addr, thread::flags, thread::fs_base, get_current_core_data(), thread::has_update_run_time, thread::id, thread::last_run_time, lock, LOG2_DEBUG, msrSetFSBase(), scheduler_queue::next_queue, ns2ms, thread::page, paging_reload(), reg, thread::reg, scheduler, spin_acquire(), spin_release(), thread::stack, thread::state, scheduler_queue::thread, THREAD_STATE_HAL, THREAD_STATE_READY, THREAD_STATE_RUNNING, THREAD_STATE_TERMINATED, THREAD_USER, vxDeatachFromScheduler(), vxHPETGetMainCount(), vxRestoreRegister(), and vxSaveRegister().
Referenced by vxStartScheduler().
| void vxStartScheduler | ( | void | ) |
Definition at line 293 of file scheduler.c.
References APIC_TIMER_PERIOD, get_current_core_cpuid(), INTERRUPT_ATTR_KERNEL, irq_register(), serial_printf(), vxAPICCreateTimer(), and vxSchedulerTick().
Referenced by __attribute__(), and INIT().
|
extern |
Definition at line 35 of file core.c.
Referenced by update_core_gs(), and vxGetCoreDataByCoreID().
| boolean_t g__scheduler__is__running = 0 |
Definition at line 19 of file scheduler.c.
Referenced by init_runtime(), and usleep().
|
static |
Definition at line 17 of file scheduler.c.
Referenced by __attribute__(), sch_restore_to_next_thread(), vxAllocScheduler(), vxDeatachFromScheduler(), vxGetSchedulerCore(), vxSchedulerGetCurrentQueue(), and vxSchedulerTick().
|
static |
Definition at line 16 of file scheduler.c.
Referenced by INIT(), and vxAllocScheduler().