Kernel: Implement IPI broadcasting
This commit is contained in:
@@ -19,6 +19,8 @@ namespace Kernel
|
||||
virtual BAN::Optional<uint8_t> get_free_irq() override;
|
||||
|
||||
virtual void initialize_multiprocessor() override;
|
||||
virtual void broadcast_ipi() override;
|
||||
virtual void enable() override;
|
||||
|
||||
private:
|
||||
uint32_t read_from_local_apic(ptrdiff_t);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <stdint.h>
|
||||
|
||||
constexpr uint8_t IRQ_VECTOR_BASE = 0x20;
|
||||
constexpr uint8_t IRQ_IPI = 32;
|
||||
|
||||
namespace Kernel
|
||||
{
|
||||
|
||||
@@ -21,6 +21,8 @@ namespace Kernel
|
||||
static InterruptController& get();
|
||||
|
||||
virtual void initialize_multiprocessor() = 0;
|
||||
virtual void broadcast_ipi() = 0;
|
||||
virtual void enable() = 0;
|
||||
|
||||
virtual BAN::ErrorOr<void> reserve_irq(uint8_t irq) = 0;
|
||||
virtual BAN::Optional<uint8_t> get_free_irq() = 0;
|
||||
|
||||
@@ -17,6 +17,8 @@ namespace Kernel
|
||||
virtual BAN::Optional<uint8_t> get_free_irq() override;
|
||||
|
||||
virtual void initialize_multiprocessor() override;
|
||||
virtual void broadcast_ipi() override {}
|
||||
virtual void enable() override {}
|
||||
|
||||
static void remap();
|
||||
static void mask_all();
|
||||
|
||||
Reference in New Issue
Block a user