StuBS
lapic_ipi.cc File Reference
Include dependency graph for lapic_ipi.cc:

Classes

struct  LAPIC::IPI::InterruptCommand.__unnamed43__
 I/O redirection-table entry. More...
 

Namespaces

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

Enumerations

enum  LAPIC::IPI::DeliveryMode {
  LAPIC::IPI::FIXED = 0 ,
  LAPIC::IPI::LOWEST_PRIORITY = 1 ,
  LAPIC::IPI::SMI = 2 ,
  LAPIC::IPI::NMI = 4 ,
  LAPIC::IPI::INIT = 5 ,
  LAPIC::IPI::INIT_LEVEL_DEASSERT = 5 ,
  LAPIC::IPI::STARTUP = 6
}
 Delivery mode specifies the type of interrupt sent to the CPU. More...
 
enum  LAPIC::IPI::DestinationMode {
  LAPIC::IPI::PHYSICAL = 0 ,
  LAPIC::IPI::LOGICAL = 1
}
 Way of interpreting the value written to the destination field. More...
 
enum  LAPIC::IPI::DeliveryStatus {
  LAPIC::IPI::IDLE = 0 ,
  LAPIC::IPI::SEND_PENDING = 1
}
 Interrupt state. More...
 
enum  LAPIC::IPI::Level {
  LAPIC::IPI::DEASSERT = 0 ,
  LAPIC::IPI::ASSERT = 1
}
 Interrupt level. More...
 
enum  LAPIC::IPI::TriggerMode {
  LAPIC::IPI::EDGE_TRIGGERED = 0 ,
  LAPIC::IPI::LEVEL_TRIGGERED = 1
}
 Trigger mode for DeliveryMode::INIT_LEVEL_DEASSERT. More...
 
enum  LAPIC::IPI::DestinationShorthand {
  LAPIC::IPI::NO_SHORTHAND = 0 ,
  LAPIC::IPI::SELF = 1 ,
  LAPIC::IPI::ALL_INCLUDING_SELF = 2 ,
  LAPIC::IPI::ALL_EXCLUDING_SELF = 3
}
 Shorthand for commonly used destinations. More...
 
enum  LAPIC::IPI::InterruptMask {
  LAPIC::IPI::UNMASKED = 0 ,
  LAPIC::IPI::MASKED = 1
}
 Interrupt mask. More...
 

Functions

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.
 

Class Documentation

◆ LAPIC::IPI::InterruptCommand.__unnamed43__

struct LAPIC::IPI::InterruptCommand.__unnamed43__

I/O redirection-table entry.

Every entry in the redirection table represents an external source of interrupts and has a size of 64 bits. Due to the I/O APIC registers being only 32 bits wide, the 64-bit value is split in two 32 bit values.

Class Members
Register value_low First, low-order register.
Register value_high Second, high-order register.