StuBS
lapic.h File Reference

LAPIC abstracts access to the Local APIC More...

#include "types.h"
Include dependency graph for lapic.h:

Namespaces

namespace  LAPIC
 Abstracts the local APIC (which is integrated into every CPU core)
 
namespace  LAPIC::IPI
 Inter-Processor Interrupts.
 
namespace  LAPIC::Timer
 Local Timer (for each LAPIC / CPU)
 

Functions

void LAPIC::init (uint8_t logical_id)
 Initialized the local APIC of the calling CPU core and sets the logical LAPIC ID in the LDR register.
 
void LAPIC::endOfInterrupt ()
 Signalize EOI (End of interrupt)
 
uint8_t LAPIC::getID ()
 Get the ID of the current core's LAPIC.
 
uint8_t LAPIC::getLogicalID ()
 Get the Logical ID of the current core's LAPIC.
 
void LAPIC::setLogicalID (uint8_t id)
 Set the Logical ID of the current core's LAPIC.
 
uint8_t LAPIC::getVersion ()
 Get version number of local APIC.
 
bool LAPIC::IPI::isDelivered ()
 Check if the previously sent IPI has reached its destination.
 
void LAPIC::IPI::send (uint8_t destination, uint8_t vector)
 Send an Inter-Processor Interrupt (IPI)
 
void LAPIC::IPI::sendGroup (uint8_t logical_destination, uint8_t vector)
 Send an Inter-Processor Interrupt (IPI) to a group of processors.
 
void LAPIC::IPI::sendAll (uint8_t vector)
 Send an Inter-Processor Interrupt (IPI) to all processors (including self)
 
void LAPIC::IPI::sendOthers (uint8_t vector)
 Send an Inter-Processor Interrupt (IPI) to all other processors (all but self)
 
void LAPIC::IPI::sendInit (bool assert=true)
 Send an INIT request IPI to all other processors.
 
void LAPIC::IPI::sendStartup (uint8_t vector)
 Send an Startup IPI to all other processors.
 
uint32_t LAPIC::Timer::ticks (void)
 Determines the LAPIC timer frequency.
 
void LAPIC::Timer::set (uint32_t counter, uint8_t divide, uint8_t vector, bool periodic, bool masked=false)
 Set the LAPIC timer.
 
void LAPIC::Timer::setMasked (bool masked)
 Set the LAPIC-timer interrupt mask.
 

Detailed Description

LAPIC abstracts access to the Local APIC