Serenity Operating System
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}