PatchworkOS
Loading...
Searching...
No Matches
smp.c File Reference
#include <kernel/cpu/smp.h>
#include <kernel/acpi/tables.h>
#include <kernel/cpu/cpu.h>
#include <kernel/cpu/interrupt.h>
#include <kernel/cpu/trampoline.h>
#include <kernel/drivers/apic.h>
#include <kernel/log/log.h>
#include <kernel/log/panic.h>
#include <kernel/mem/vmm.h>
#include <kernel/cpu/regs.h>
#include <kernel/defs.h>
#include <assert.h>
#include <stdatomic.h>
#include <stdint.h>

Go to the source code of this file.

Functions

static cpu_t bootstrapCpu ALIGNED (PAGE_SIZE)
 
void smp_bootstrap_init_early (void)
 Early initialization of the bootstrap CPU.
 
void smp_bootstrap_init (void)
 Initializes the bootstrap CPU structure.
 
void smp_others_init (void)
 Initializes the other CPUs.
 
static void smp_halt_ipi (interrupt_frame_t *frame)
 
void smp_halt_others (void)
 Halts all CPUs except the current one.
 

Variables

cpu_t_cpus [CPU_MAX] = {&bootstrapCpu}
 Array of pointers to cpu_t structures for each CPU.
 
uint16_t _cpuAmount = 1
 The number of CPUs currently identified.
 
static atomic_uint16_t haltedAmount = ATOMIC_VAR_INIT(0)
 

Function Documentation

◆ ALIGNED()

static cpu_t bootstrapCpu ALIGNED ( PAGE_SIZE  )
static

◆ smp_halt_ipi()

static void smp_halt_ipi ( interrupt_frame_t frame)
static

Definition at line 89 of file smp.c.

References atomic_fetch_add, and haltedAmount.

Variable Documentation

◆ haltedAmount

atomic_uint16_t haltedAmount = ATOMIC_VAR_INIT(0)
static

Definition at line 24 of file smp.c.

Referenced by smp_halt_ipi().