PatchworkOS  321f6ec
A non-POSIX operating system.
Loading...
Searching...
No Matches
lapic.c File Reference
#include <modules/drivers/apic/lapic.h>
#include <kernel/cpu/cpu.h>
#include <kernel/cpu/ipi.h>
#include <kernel/cpu/irq.h>
#include <kernel/log/log.h>
#include <kernel/mem/vmm.h>
#include <kernel/utils/utils.h>
#include <modules/acpi/tables.h>
#include <assert.h>
#include <kernel/defs.h>
Include dependency graph for lapic.c:

Go to the source code of this file.

Functions

uint32_t lapic_read (uint32_t reg)
 Read from a local apic register.
 
void lapic_write (uint32_t reg, uint32_t value)
 Write to a local apic register.
 
void lapic_init (cpu_t *cpu)
 Initialize the local APIC for a CPU.
 
lapic_tlapic_get (uint32_t cpuId)
 Get the lapic data for the specified CPU.
 
static void lapic_interrupt (cpu_t *cpu, irq_virt_t virt)
 
static void lapic_eoi (cpu_t *cpu)
 
uint64_t lapic_global_init (void)
 Initialize the local APIC subsystem.
 
void lapic_send_init (lapic_id_t id)
 Send an INIT IPI to the specified local APIC.
 
void lapic_send_sipi (lapic_id_t id, void *entryPoint)
 Send a Startup IPI (SIPI) to the specified local APIC.
 

Variables

static uintptr_t lapicBase = 0
 
static lapic_t lapics [CPU_MAX] = {[0 ... CPU_MAX - 1] = {.lapicId = -1, .ticksPerMs = 0}}
 
static ipi_chip_t lapicIpiChip
 

Function Documentation

◆ lapic_interrupt()

static void lapic_interrupt ( cpu_t cpu,
irq_virt_t  virt 
)
static

Definition at line 55 of file lapic.c.

Here is the call graph for this function:

◆ lapic_eoi()

static void lapic_eoi ( cpu_t cpu)
static

Definition at line 63 of file lapic.c.

Here is the call graph for this function:

Variable Documentation

◆ lapicBase

uintptr_t lapicBase = 0
static

Definition at line 14 of file lapic.c.

◆ lapics

lapic_t lapics[CPU_MAX] = {[0 ... CPU_MAX - 1] = {.lapicId = -1, .ticksPerMs = 0}}
static

Definition at line 16 of file lapic.c.

◆ lapicIpiChip

ipi_chip_t lapicIpiChip
static
Initial value:
= {
.name = "Local APIC IPI",
.interrupt = lapic_interrupt,
.eoi = lapic_eoi,
}
static void lapic_eoi(cpu_t *cpu)
Definition lapic.c:63
static void lapic_interrupt(cpu_t *cpu, irq_virt_t virt)
Definition lapic.c:55

Definition at line 70 of file lapic.c.