diff options
Diffstat (limited to 'libk/stdlib/console.cc')
-rw-r--r-- | libk/stdlib/console.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libk/stdlib/console.cc b/libk/stdlib/console.cc index 308f055..a234e6b 100644 --- a/libk/stdlib/console.cc +++ b/libk/stdlib/console.cc @@ -1,15 +1,17 @@ #include "stdlib.h" -static Console* global_console = nullptr; +constexpr size_t max_consoles = 4; +static Console* global_console[max_consoles] = {nullptr}; +static size_t last_console = 0; void Console::set(Console* ptr) { - if (ptr != nullptr) { - global_console = ptr; + if (ptr != nullptr && last_console < max_consoles) { + global_console[last_console++] = ptr; } } -Console* Console::get() { - return global_console; +Iterator<Console*> Console::begin() { + return Iterator<Console*>(global_console, last_console); } void abort() { |