Kernel: Rework interrupt mechanism

All interruptrable classes now inherit from Interruptable which
has methdo handle_irq which is called on a interrupt.
This commit is contained in:
2023-10-05 18:53:45 +03:00
parent 68a913c838
commit 27eb5af6f0
23 changed files with 716 additions and 706 deletions

View File

@@ -1,6 +1,8 @@
#pragma once
#include <BAN/CircularQueue.h>
#include <BAN/Errors.h>
#include <kernel/InterruptController.h>
#include <kernel/Terminal/TTY.h>
namespace Kernel
@@ -34,7 +36,7 @@ namespace Kernel
uint32_t m_height { 0 };
};
class SerialTTY final : public TTY
class SerialTTY final : public TTY, public Interruptable
{
public:
static BAN::ErrorOr<BAN::RefPtr<SerialTTY>> create(Serial);
@@ -45,6 +47,8 @@ namespace Kernel
virtual void update() override;
virtual void handle_irq() override;
protected:
virtual BAN::StringView name() const override { return m_name; }
@@ -55,6 +59,7 @@ namespace Kernel
private:
BAN::String m_name;
Serial m_serial;
BAN::CircularQueue<uint8_t, 128> m_input;
public:
virtual dev_t rdev() const override { return m_rdev; }