25 lines
541 B
C++
25 lines
541 B
C++
#pragma once
|
|
|
|
#include <glacier/container/hash_map.h>
|
|
#include <glacier/memory/ref_ptr.h>
|
|
|
|
#include "object/port.h"
|
|
|
|
class DriverManager {
|
|
public:
|
|
static DriverManager& Get();
|
|
|
|
DriverManager();
|
|
DriverManager(const DriverManager&) = delete;
|
|
DriverManager(DriverManager&&) = delete;
|
|
|
|
void WriteMessage(uint64_t irq_num, IpcMessage&& message);
|
|
|
|
[[nodiscard]] glcr::ErrorOr<uint8_t> RegisterListener(
|
|
glcr::RefPtr<Port> port);
|
|
|
|
private:
|
|
const uint64_t IRQ_OFFSET = 0x60;
|
|
glcr::Vector<glcr::RefPtr<Port>> driver_list_;
|
|
};
|