CommandLine.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/HashMap.h>
  8. #include <AK/Optional.h>
  9. #include <AK/String.h>
  10. #include <AK/Vector.h>
  11. namespace Kernel {
  12. enum class BootMode {
  13. Text,
  14. SelfTest,
  15. Graphical
  16. };
  17. enum class HPETMode {
  18. Periodic,
  19. NonPeriodic
  20. };
  21. enum class AcpiFeatureLevel {
  22. Enabled,
  23. Limited,
  24. Disabled,
  25. };
  26. enum class PCIAccessLevel {
  27. IOAddressing,
  28. MappingPerBus,
  29. MappingPerDevice,
  30. };
  31. enum class AHCIResetMode {
  32. ControllerOnly,
  33. Complete,
  34. None
  35. };
  36. class CommandLine {
  37. AK_MAKE_ETERNAL;
  38. public:
  39. static void early_initialize(const char* cmd_line);
  40. static void initialize();
  41. [[nodiscard]] const String& string() const { return m_string; }
  42. Optional<String> lookup(const String& key) const;
  43. [[nodiscard]] bool contains(const String& key) const;
  44. [[nodiscard]] bool is_boot_profiling_enabled() const;
  45. [[nodiscard]] bool is_ide_enabled() const;
  46. [[nodiscard]] bool is_smp_enabled() const;
  47. [[nodiscard]] bool is_vmmouse_enabled() const;
  48. [[nodiscard]] PCIAccessLevel pci_access_level() const;
  49. [[nodiscard]] bool is_legacy_time_enabled() const;
  50. [[nodiscard]] bool is_text_mode() const;
  51. [[nodiscard]] bool is_force_pio() const;
  52. [[nodiscard]] AcpiFeatureLevel acpi_feature_level() const;
  53. [[nodiscard]] BootMode boot_mode() const;
  54. [[nodiscard]] HPETMode hpet_mode() const;
  55. [[nodiscard]] bool disable_physical_storage() const;
  56. [[nodiscard]] bool disable_ps2_controller() const;
  57. [[nodiscard]] bool disable_uhci_controller() const;
  58. [[nodiscard]] bool disable_virtio() const;
  59. [[nodiscard]] AHCIResetMode ahci_reset_mode() const;
  60. [[nodiscard]] String userspace_init() const;
  61. [[nodiscard]] Vector<String> userspace_init_args() const;
  62. [[nodiscard]] String root_device() const;
  63. private:
  64. CommandLine(const String&);
  65. String m_string;
  66. HashMap<String, String> m_params;
  67. };
  68. const CommandLine& kernel_command_line();
  69. }