PrivateInodeVMObject.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <Kernel/FileSystem/Inode.h>
  7. #include <Kernel/Memory/PrivateInodeVMObject.h>
  8. namespace Kernel::Memory {
  9. ErrorOr<NonnullRefPtr<PrivateInodeVMObject>> PrivateInodeVMObject::try_create_with_inode(Inode& inode)
  10. {
  11. auto new_physical_pages = TRY(VMObject::try_create_physical_pages(inode.size()));
  12. return adopt_nonnull_ref_or_enomem(new (nothrow) PrivateInodeVMObject(inode, move(new_physical_pages)));
  13. }
  14. ErrorOr<NonnullRefPtr<VMObject>> PrivateInodeVMObject::try_clone()
  15. {
  16. auto new_physical_pages = TRY(this->try_clone_physical_pages());
  17. return adopt_nonnull_ref_or_enomem<VMObject>(new (nothrow) PrivateInodeVMObject(*this, move(new_physical_pages)));
  18. }
  19. PrivateInodeVMObject::PrivateInodeVMObject(Inode& inode, FixedArray<RefPtr<PhysicalPage>>&& new_physical_pages)
  20. : InodeVMObject(inode, move(new_physical_pages))
  21. {
  22. }
  23. PrivateInodeVMObject::PrivateInodeVMObject(PrivateInodeVMObject const& other, FixedArray<RefPtr<PhysicalPage>>&& new_physical_pages)
  24. : InodeVMObject(other, move(new_physical_pages))
  25. {
  26. }
  27. PrivateInodeVMObject::~PrivateInodeVMObject()
  28. {
  29. }
  30. }