Kernel: Implement TerminalDriver for Framebuffer device

Use this new FramebufferTerminalDriver for terminal instead of the
old VesaTerminalDriver. Only drawback with this is that framebuffer
device can only be intialized after DevFS is initialized.
This commit is contained in:
2023-11-22 21:57:17 +02:00
parent b88a7e0c6b
commit fd18071975
5 changed files with 99 additions and 9 deletions

View File

@@ -2,6 +2,7 @@
#include <kernel/Arch.h>
#include <kernel/BootInfo.h>
#include <kernel/Debug.h>
#include <kernel/Device/FramebufferDevice.h>
#include <kernel/FS/DevFS/FileSystem.h>
#include <kernel/FS/ProcFS/FileSystem.h>
#include <kernel/FS/VirtualFileSystem.h>
@@ -20,7 +21,7 @@
#include <kernel/Syscall.h>
#include <kernel/Terminal/Serial.h>
#include <kernel/Terminal/VirtualTTY.h>
#include <kernel/Terminal/VesaTerminalDriver.h>
#include <kernel/Terminal/FramebufferTerminal.h>
#include <kernel/Timer/Timer.h>
struct ParsedCommandLine
@@ -108,10 +109,6 @@ extern "C" void kernel_main(uint32_t boot_magic, uint32_t boot_info)
PageTable::initialize();
dprintln("PageTable initialized");
g_terminal_driver = VesaTerminalDriver::create();
if (g_terminal_driver)
dprintln("VESA initialized");
Heap::initialize();
dprintln("Heap initialzed");
@@ -130,6 +127,12 @@ extern "C" void kernel_main(uint32_t boot_magic, uint32_t boot_info)
DevFileSystem::initialize();
dprintln("devfs initialized");
auto framebuffer_device = FramebufferDevice::create_from_boot_framebuffer();
if (!framebuffer_device.is_error())
g_terminal_driver = FramebufferTerminalDriver::create(framebuffer_device.value());
if (g_terminal_driver)
dprintln("Framebuffer terminal initialized");
ProcFileSystem::initialize();
dprintln("procfs initialized");