FileSystem.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
  3. * Copyright (c) 2021, Spencer Dixon <spencercdixon@gmail.com>
  4. * Copyright (c) 2021, Liav A. <liavalb@hotmail.co.il>
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause
  7. */
  8. #include <Kernel/FileSystem/ProcFS/FileSystem.h>
  9. #include <Kernel/FileSystem/ProcFS/Inode.h>
  10. namespace Kernel {
  11. ErrorOr<NonnullRefPtr<FileSystem>> ProcFS::try_create()
  12. {
  13. return TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ProcFS));
  14. }
  15. ProcFS::ProcFS() = default;
  16. ProcFS::~ProcFS() = default;
  17. ErrorOr<NonnullRefPtr<Inode>> ProcFS::get_inode(InodeIdentifier inode_id) const
  18. {
  19. if (inode_id.index() == 1)
  20. return *m_root_inode;
  21. return TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ProcFSInode(const_cast<ProcFS&>(*this), inode_id.index())));
  22. }
  23. ErrorOr<void> ProcFS::initialize()
  24. {
  25. m_root_inode = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ProcFSInode(const_cast<ProcFS&>(*this), 1)));
  26. return {};
  27. }
  28. Inode& ProcFS::root_inode()
  29. {
  30. return *m_root_inode;
  31. }
  32. }