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:
@@ -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; }
|
||||
|
||||
Reference in New Issue
Block a user