Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
scheduler.c File Reference
#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_tvxGetSchedulerCore (uint16_t core)
 
 INIT (Scheduler)
 
scheduler_queue_tvxSchedulerGetCurrentQueue (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_tvxAllocScheduler (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_cachescheduler_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
 

Macro Definition Documentation

◆ APIC_TIMER_MASKED

#define APIC_TIMER_MASKED   (1 << 16)

Definition at line 291 of file scheduler.c.

Function Documentation

◆ attach_to_scheduler()

void attach_to_scheduler ( thread_t * new_thread)

◆ INIT()

INIT ( Scheduler )

Definition at line 23 of file scheduler.c.

References LOG_INFO, scheduler_cache, and vxCreateSlabCache().

◆ sch_restore_to_next_thread()

◆ vxAllocScheduler()

static scheduler_queue_t * vxAllocScheduler ( const uint16_t core)
static

◆ vxDeatachFromScheduler()

static void vxDeatachFromScheduler ( scheduler_queue_t * current,
bool already_locked )
static

◆ vxGetSchedulerCore()

scheduler_core_t * vxGetSchedulerCore ( uint16_t core)

Definition at line 21 of file scheduler.c.

References core, and scheduler.

Referenced by update_core_gs().

◆ vxRestoreRegister()

static void vxRestoreRegister ( volatile interrupt_stack_frame_t * stack,
cpu_register_t * reg )
static

Definition at line 89 of file scheduler.c.

References reg, and stack.

Referenced by sch_restore_to_next_thread(), and vxSchedulerTick().

◆ vxSaveRegister()

static void vxSaveRegister ( volatile interrupt_stack_frame_t * stack,
cpu_register_t * reg )
static

Definition at line 65 of file scheduler.c.

References reg, and stack.

Referenced by vxSchedulerTick().

◆ vxSchedulerGetCurrentQueue()

scheduler_queue_t * vxSchedulerGetCurrentQueue ( uint16_t core)

Definition at line 29 of file scheduler.c.

References core, and scheduler.

Referenced by __attribute__(), and vxThreadExit().

◆ vxSchedulerTick()

◆ vxStartScheduler()

void vxStartScheduler ( void )

Variable Documentation

◆ core_data

each_core_data core_data[VOXIA_MAX_CORE]
extern

Definition at line 35 of file core.c.

Referenced by update_core_gs(), and vxGetCoreDataByCoreID().

◆ g__scheduler__is__running

boolean_t g__scheduler__is__running = 0

Definition at line 19 of file scheduler.c.

Referenced by init_runtime(), and usleep().

◆ scheduler

◆ scheduler_cache

struct slab_cache* scheduler_cache = 0
static

Definition at line 16 of file scheduler.c.

Referenced by INIT(), and vxAllocScheduler().