Initialize.cpp 780 B

1234567891011121314151617181920212223242526272829303132333435
  1. /*
  2. * Copyright (c) 2020, Liav A. <liavalb@hotmail.co.il>
  3. * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #include <Kernel/ACPI/DynamicParser.h>
  8. #include <Kernel/CommandLine.h>
  9. #include <Kernel/Sections.h>
  10. namespace Kernel::ACPI {
  11. UNMAP_AFTER_INIT void initialize()
  12. {
  13. auto feature_level = kernel_command_line().acpi_feature_level();
  14. if (feature_level == AcpiFeatureLevel::Disabled)
  15. return;
  16. auto rsdp = StaticParsing::find_rsdp();
  17. if (!rsdp.has_value())
  18. return;
  19. if (feature_level == AcpiFeatureLevel::Enabled)
  20. Parser::initialize<DynamicParser>(rsdp.value());
  21. else
  22. Parser::initialize<Parser>(rsdp.value());
  23. }
  24. bool is_enabled()
  25. {
  26. return Parser::the();
  27. }
  28. }