Serenity Operating System
1/*
2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <AK/Types.h>
10#include <Kernel/FileSystem/FileSystem.h>
11#include <Kernel/FileSystem/Inode.h>
12#include <Kernel/Forward.h>
13
14namespace Kernel {
15
16class ProcFSInode;
17class ProcFS final : public FileSystem {
18 friend class ProcFSInode;
19 friend class Process;
20
21public:
22 virtual ~ProcFS() override;
23 static ErrorOr<NonnullLockRefPtr<FileSystem>> try_create();
24
25 virtual ErrorOr<void> initialize() override;
26 virtual StringView class_name() const override { return "ProcFS"sv; }
27
28 virtual Inode& root_inode() override;
29
30private:
31 ProcFS();
32
33 ErrorOr<NonnullRefPtr<Inode>> get_inode(InodeIdentifier) const;
34
35 RefPtr<ProcFSInode> m_root_inode;
36};
37
38}