PatchworkOS  dbbdc99
A non-POSIX operating system.
Loading...
Searching...
No Matches
lapic.c File Reference
#include <kernel/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 <kernel/acpi/tables.h>
#include <assert.h>
#include <sys/defs.h>
Include dependency graph for lapic.c:

Go to the source code of this file.

Functions

 PERCPU_DEFINE_CTOR (lapic_t, _pcpu_lapic)
 
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.
 
static void lapic_interrupt (cpu_t *cpu, irq_virt_t virt)
 
static void lapic_eoi (void)
 
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.
 
uint64_t lapic_global_init (void)
 Global initialization for the local APICs.
 

Variables

static uintptr_t lapicBase = 0
 
static ipi_chip_t lapicIpiChip
 

Function Documentation

◆ PERCPU_DEFINE_CTOR()

PERCPU_DEFINE_CTOR ( lapic_t  ,
_pcpu_lapic   
)

Definition at line 16 of file lapic.c.

Here is the call graph for this function:

◆ lapic_interrupt()

static void lapic_interrupt ( cpu_t cpu,
irq_virt_t  virt 
)
static

Definition at line 47 of file lapic.c.

Here is the call graph for this function:

◆ lapic_eoi()

static void lapic_eoi ( void  )
static

Definition at line 55 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.

◆ lapicIpiChip

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

Definition at line 60 of file lapic.c.