Barrelfish
Functions | Variables
apic.c File Reference

Intel 64 local APIC driver. More...

Functions

void apic_timer_init (bool masked, bool periodic)
 Initializes the local APIC timer. More...
 
void apic_perfcnt_init (void)
 Initializes performance counter overflow interrupt.
 
void apic_perfcnt_stop (void)
 Initializes performance counter overflow interrupt.
 
void apic_init (void)
 This function initializes the local APIC. This function initialzes the local APIC by writes to the memory mapped registers and by enabling it in the MSR.
 
void apic_send_init_assert (uint8_t destination, uint8_t destination_shorthand)
 Send an INIT IPI (assert mode) This function sends an INIT IPI to the destination processor or the processors included in the shorthand in assert mode. More...
 
void apic_send_init_deassert (void)
 Send an INIT IPI (de-assert mode) This function sends an INIT IPI to all processors. INIT IPIs in de-assert mode are always sent to all processors, regardless of the destination value and the destination shorthand value.
 
void apic_send_start_up (uint8_t destination, uint8_t destination_shorthand, uint8_t realmode_startpage)
 Send a Start-Up IPI. More...
 
void apic_send_std_ipi (uint8_t destination, uint8_t destination_shorthand, uint8_t vector)
 Send an standard IPI to the definded target APIC This function sends an standard IPI to the target APIC. More...
 
void apic_eoi (void)
 This function sends an EOI to the local APIC An End-Of-Interrupt is sent to the local APIC. This function should be called at the end of an interrupt handler.
 
void apic_seoi (uint8_t int_nr)
 This function sends a specific EOI to the local APIC A specific End-Of-Interrupt is sent to the local APIC. This function should be called at the end of an interrupt handler.
 
void apic_mask_timer (void)
 
void apic_unmask_timer (void)
 
void systime_set_timeout (systime_t timeout)
 

Variables

uint64_t apic_systime_frequency_ratio
 Ratio of APIC frequency to systime frequency * 2^32.
 
uint8_t apic_id
 
bool apic_bsp = true
 

Detailed Description

Intel 64 local APIC driver.

Function Documentation

void apic_mask_timer ( void  )

Mask the timer interrupt.

void apic_send_init_assert ( uint8_t  destination,
uint8_t  destination_shorthand 
)

Send an INIT IPI (assert mode) This function sends an INIT IPI to the destination processor or the processors included in the shorthand in assert mode.

Parameters
destinationThe destination, if shorthand = xapic_none
destination_shorthandTHe shorthand of the destination which may be xapic_none, xapic_self, xapic_all_inc or xapic_all_exc
void apic_send_start_up ( uint8_t  destination,
uint8_t  destination_shorthand,
uint8_t  realmode_startpage 
)

Send a Start-Up IPI.

This function sends a Start-Up IPI to the destination processor or the processors included in the shorthand.

Parameters
destinationThe destination, if shorthand = xapic_none
destination_shorthandTHe shorthand of the destination which may be xapic_none, xapic_self, xapic_all_inc or xapic_all_exc
void apic_send_std_ipi ( uint8_t  destination,
uint8_t  destination_shorthand,
uint8_t  vector 
)

Send an standard IPI to the definded target APIC This function sends an standard IPI to the target APIC.

Parameters
destinationThe destination, if shorthand = xapic_none
destination_shorthandTHe shorthand of the destination which may be xapic_none, xapic_self, xapic_all_inc or xapic_all_exc
void apic_timer_init ( bool  masked,
bool  periodic 
)

Initializes the local APIC timer.

Parameters
maskedMask interrupt
periodicPeriodic or one-shot
void apic_unmask_timer ( void  )

Unmask the timer interrupt.

void systime_set_timeout ( systime_t  timeout)

Set a point at which a timer interrupt should occur if it's in a past, trigger immediately

Variable Documentation

bool apic_bsp = true

True if we're on the BSP

uint8_t apic_id

The kernel's APIC ID.