mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 07:15:07 +00:00

As we removed the support of VBE modesetting that was done by GRUB early on boot, we need to determine if we can modeset the resolution with our drivers, and if not, we should enable text mode and ensure that SystemServer knows about it too. Also, SystemServer should first check if there's a framebuffer device node, which is an indication that text mode was not even if it was requested. Then, if it doesn't find it, it should check what boot_mode argument the user specified (in case it's self-test). This way if we try to use bochs-display device (which is not VGA compatible) and request a text mode, it will not honor the request and will continue with graphical mode. Also try to print critical messages with mininum memory allocations possible. In LibVT, We make the implementation flexible for kernel-specific methods that are implemented in ConsoleImpl class.
85 lines
2.1 KiB
C++
85 lines
2.1 KiB
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/HashMap.h>
|
|
#include <AK/Optional.h>
|
|
#include <AK/String.h>
|
|
#include <AK/Vector.h>
|
|
|
|
namespace Kernel {
|
|
|
|
enum class BootMode {
|
|
NoFramebufferDevices,
|
|
SelfTest,
|
|
Graphical
|
|
};
|
|
|
|
enum class HPETMode {
|
|
Periodic,
|
|
NonPeriodic
|
|
};
|
|
|
|
enum class AcpiFeatureLevel {
|
|
Enabled,
|
|
Limited,
|
|
Disabled,
|
|
};
|
|
|
|
enum class PCIAccessLevel {
|
|
IOAddressing,
|
|
MappingPerBus,
|
|
MappingPerDevice,
|
|
};
|
|
|
|
enum class AHCIResetMode {
|
|
ControllerOnly,
|
|
Complete,
|
|
None
|
|
};
|
|
|
|
class CommandLine {
|
|
AK_MAKE_ETERNAL;
|
|
|
|
public:
|
|
static void early_initialize(const char* cmd_line);
|
|
static void initialize();
|
|
|
|
[[nodiscard]] const String& string() const { return m_string; }
|
|
Optional<String> lookup(const String& key) const;
|
|
[[nodiscard]] bool contains(const String& key) const;
|
|
|
|
[[nodiscard]] bool is_boot_profiling_enabled() const;
|
|
[[nodiscard]] bool is_ide_enabled() const;
|
|
[[nodiscard]] bool is_smp_enabled() const;
|
|
[[nodiscard]] bool is_vmmouse_enabled() const;
|
|
[[nodiscard]] PCIAccessLevel pci_access_level() const;
|
|
[[nodiscard]] bool is_legacy_time_enabled() const;
|
|
[[nodiscard]] bool is_no_framebuffer_devices_mode() const;
|
|
[[nodiscard]] bool is_force_pio() const;
|
|
[[nodiscard]] AcpiFeatureLevel acpi_feature_level() const;
|
|
[[nodiscard]] BootMode boot_mode() const;
|
|
[[nodiscard]] HPETMode hpet_mode() const;
|
|
[[nodiscard]] bool disable_physical_storage() const;
|
|
[[nodiscard]] bool disable_ps2_controller() const;
|
|
[[nodiscard]] bool disable_uhci_controller() const;
|
|
[[nodiscard]] bool disable_virtio() const;
|
|
[[nodiscard]] AHCIResetMode ahci_reset_mode() const;
|
|
[[nodiscard]] String userspace_init() const;
|
|
[[nodiscard]] Vector<String> userspace_init_args() const;
|
|
[[nodiscard]] String root_device() const;
|
|
|
|
private:
|
|
CommandLine(const String&);
|
|
|
|
String m_string;
|
|
HashMap<String, String> m_params;
|
|
};
|
|
|
|
const CommandLine& kernel_command_line();
|
|
|
|
}
|