/* * Copyright (c) 2022, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Kernel { class GraphicsManagement; class VGAIOArbiter { public: static NonnullOwnPtr must_create(Badge); void disable_vga_emulation_access_permanently(Badge); void enable_vga_text_mode_console_cursor(Badge); void disable_vga_text_mode_console_cursor(Badge); void set_vga_text_mode_cursor(Badge, size_t console_width, size_t x, size_t y); void unblank_screen(Badge); ~VGAIOArbiter(); private: VGAIOArbiter(); void disable_vga_text_mode_console_cursor(); void enable_vga_text_mode_console_cursor(); RecursiveSpinlock m_main_vga_lock { LockRank::None }; bool m_vga_access_is_disabled { false }; }; }