Serenity Operating System
at master 40 lines 1.0 kB view raw
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 9#include <Kernel/FileSystem/ProcFS/FileSystem.h> 10#include <Kernel/FileSystem/ProcFS/Inode.h> 11 12namespace Kernel { 13 14ErrorOr<NonnullLockRefPtr<FileSystem>> ProcFS::try_create() 15{ 16 return TRY(adopt_nonnull_lock_ref_or_enomem(new (nothrow) ProcFS)); 17} 18 19ProcFS::ProcFS() = default; 20ProcFS::~ProcFS() = default; 21 22ErrorOr<NonnullRefPtr<Inode>> ProcFS::get_inode(InodeIdentifier inode_id) const 23{ 24 if (inode_id.index() == 1) 25 return *m_root_inode; 26 return TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ProcFSInode(const_cast<ProcFS&>(*this), inode_id.index()))); 27} 28 29ErrorOr<void> ProcFS::initialize() 30{ 31 m_root_inode = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ProcFSInode(const_cast<ProcFS&>(*this), 1))); 32 return {}; 33} 34 35Inode& ProcFS::root_inode() 36{ 37 return *m_root_inode; 38} 39 40}