diff options
| author | Arseney300 <Arseney300@gmail.com> | 2026-04-23 17:02:05 +0700 |
|---|---|---|
| committer | Arseney300 <Arseney300@gmail.com> | 2026-04-23 17:02:05 +0700 |
| commit | e935c3afba9b3a492ad804726fa0fd97d437d8f5 (patch) | |
| tree | c8c26fe36ed4db1ffec4dab5f5bf3b489c064a07 /kernel/drivers/driver_registry.cpp | |
| parent | 496246c92dabe6757480147016490ea6ae43bb66 (diff) | |
WIP: add driver objectsWIP/add_driver_obj
Diffstat (limited to 'kernel/drivers/driver_registry.cpp')
| -rw-r--r-- | kernel/drivers/driver_registry.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/kernel/drivers/driver_registry.cpp b/kernel/drivers/driver_registry.cpp new file mode 100644 index 0000000..43b2b5a --- /dev/null +++ b/kernel/drivers/driver_registry.cpp @@ -0,0 +1,55 @@ +// ============================================================================ +// drivers/driver_registry.cpp — Driver/device registry globals +// +// Provides storage for per-category driver lists, the active console +// pointer, and the platform bus singleton. Always compiled. +// ============================================================================ + +#include <kernel/console_driver.h> +#include <kernel/platform_bus.h> + +// ── ConsoleDriver default write implementation ──────────────────────────── + +void ConsoleDriver::write(const char* s, size_t len) { + for (size_t i = 0; i < len; ++i) { + putchar(s[i]); + } +} + +// ── Console registry ────────────────────────────────────────────────────── + +static DriverList<ConsoleDriver> g_console_drivers; +static ConsoleDriver* g_active_console = nullptr; + +namespace console { + +void register_driver(ConsoleDriver* driver) { + g_console_drivers.add(driver); +} + +void set_active(ConsoleDriver* driver) { + g_active_console = driver; +} + +ConsoleDriver* active() { + return g_active_console; +} + +DriverList<ConsoleDriver>& drivers() { + return g_console_drivers; +} + +} // namespace console + +// ── Platform bus (lazy singleton) ───────────────────────────────────────── + +namespace platform { + +Bus& bus() { + if (!PlatformBus::instance()) { + PlatformBus::create(); + } + return *PlatformBus::instance(); +} + +} // namespace platform |
