Kernel: Implement IPI broadcasting

This commit is contained in:
2024-03-09 23:53:38 +02:00
parent 2323a55517
commit 89ca4c8a8b
8 changed files with 36 additions and 5 deletions

View File

@@ -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);

View File

@@ -7,6 +7,7 @@
#include <stdint.h>
constexpr uint8_t IRQ_VECTOR_BASE = 0x20;
constexpr uint8_t IRQ_IPI = 32;
namespace Kernel
{

View File

@@ -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;

View File

@@ -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();