ContiguousVMObject.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * Copyright (c) 2020, Liav A. <liavalb@hotmail.co.il>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <Kernel/VM/ContiguousVMObject.h>
  7. #include <Kernel/VM/MemoryManager.h>
  8. #include <Kernel/VM/PhysicalPage.h>
  9. namespace Kernel {
  10. NonnullRefPtr<ContiguousVMObject> ContiguousVMObject::create_with_size(size_t size, size_t physical_alignment)
  11. {
  12. return adopt_ref(*new ContiguousVMObject(size, physical_alignment));
  13. }
  14. ContiguousVMObject::ContiguousVMObject(size_t size, size_t physical_alignment)
  15. : VMObject(size)
  16. {
  17. auto contiguous_physical_pages = MM.allocate_contiguous_supervisor_physical_pages(size, physical_alignment);
  18. for (size_t i = 0; i < page_count(); i++) {
  19. physical_pages()[i] = contiguous_physical_pages[i];
  20. dbgln_if(CONTIGUOUS_VMOBJECT_DEBUG, "Contiguous page[{}]: {}", i, physical_pages()[i]->paddr());
  21. }
  22. }
  23. ContiguousVMObject::ContiguousVMObject(const ContiguousVMObject& other)
  24. : VMObject(other)
  25. {
  26. }
  27. ContiguousVMObject::~ContiguousVMObject()
  28. {
  29. }
  30. RefPtr<VMObject> ContiguousVMObject::clone()
  31. {
  32. VERIFY_NOT_REACHED();
  33. }
  34. }