SimpleKernel
1.17.0
Loading...
Searching...
No Matches
mount.hpp
Go to the documentation of this file.
1
5
#pragma once
6
7
#include "
filesystem.hpp
"
8
9
namespace
vfs
{
10
15
struct
MountPoint
{
17
const
char
*
mount_path
{
nullptr
};
19
Dentry
*
mount_dentry
{
nullptr
};
21
FileSystem
*
filesystem
{
nullptr
};
23
BlockDevice
*
device
{
nullptr
};
25
Inode
*
root_inode
{
nullptr
};
27
Dentry
*
root_dentry
{
nullptr
};
29
bool
active
{
false
};
30
};
34
class
MountTable
{
35
public
:
37
static
constexpr
size_t
kMaxMounts
= 16;
38
41
MountTable
() =
default
;
42
MountTable
(
const
MountTable
&) =
delete
;
43
MountTable
(
MountTable
&&) =
delete
;
44
auto
operator=
(
const
MountTable
&) ->
MountTable
& =
delete
;
45
auto
operator=
(
MountTable
&&) ->
MountTable
& =
delete
;
46
~MountTable
() =
default
;
48
58
[[nodiscard]]
auto
Mount
(
const
char
* path,
FileSystem
* fs,
59
BlockDevice
* device) ->
Expected<void>
;
60
66
[[nodiscard]]
auto
Unmount
(
const
char
* path) ->
Expected<void>
;
67
73
[[nodiscard]]
auto
Lookup
(
const
char
* path) ->
MountPoint
*;
74
80
[[nodiscard]]
auto
GetRootDentry
(
MountPoint
* mp) ->
Dentry
*;
81
87
[[nodiscard]]
auto
FindByMountDentry
(
const
Dentry
* dentry) ->
MountPoint
*;
88
95
[[nodiscard]]
auto
IsMountPoint
(
const
char
* path) -> bool;
96
101
[[nodiscard]]
auto
GetRootMount
() ->
MountPoint
*;
102
103
private
:
104
MountPoint
mounts_
[
kMaxMounts
]{};
105
size_t
mount_count_
{0};
106
MountPoint
*
root_mount_
{
nullptr
};
107
};
108
113
[[nodiscard]]
auto
GetMountTable
() -> MountTable&;
114
115
}
// namespace vfs
vfs::BlockDevice
块设备抽象基类
Definition
block_device.hpp:19
vfs::FileSystem
文件系统类型基类
Definition
filesystem.hpp:17
vfs::MountTable
挂载表管理器
Definition
mount.hpp:34
vfs::MountTable::FindByMountDentry
auto FindByMountDentry(const Dentry *dentry) -> MountPoint *
根据 dentry 查找挂载在其上的文件系统
Definition
mount.cpp:203
vfs::MountTable::Unmount
auto Unmount(const char *path) -> Expected< void >
卸载指定路径的文件系统
Definition
mount.cpp:108
vfs::MountTable::~MountTable
~MountTable()=default
vfs::MountTable::mount_count_
size_t mount_count_
Definition
mount.hpp:105
vfs::MountTable::GetRootMount
auto GetRootMount() -> MountPoint *
获取根挂载点
Definition
mount.cpp:232
vfs::MountTable::operator=
auto operator=(MountTable &&) -> MountTable &=delete
vfs::MountTable::kMaxMounts
static constexpr size_t kMaxMounts
最大挂载点数
Definition
mount.hpp:37
vfs::MountTable::MountTable
MountTable(const MountTable &)=delete
vfs::MountTable::MountTable
MountTable()=default
vfs::MountTable::IsMountPoint
auto IsMountPoint(const char *path) -> bool
检查路径是否是挂载点
Definition
mount.cpp:217
vfs::MountTable::operator=
auto operator=(const MountTable &) -> MountTable &=delete
vfs::MountTable::mounts_
MountPoint mounts_[kMaxMounts]
Definition
mount.hpp:104
vfs::MountTable::Mount
auto Mount(const char *path, FileSystem *fs, BlockDevice *device) -> Expected< void >
挂载文件系统到指定路径
Definition
mount.cpp:16
vfs::MountTable::Lookup
auto Lookup(const char *path) -> MountPoint *
根据路径查找对应的挂载点
Definition
mount.cpp:158
vfs::MountTable::MountTable
MountTable(MountTable &&)=delete
vfs::MountTable::root_mount_
MountPoint * root_mount_
Definition
mount.hpp:106
Expected
std::expected< T, Error > Expected
std::expected 别名模板
Definition
expected.hpp:365
filesystem.hpp
filesystem
Definition
file_descriptor.cpp:9
vfs
Definition
device_node.hpp:28
vfs::GetRootDentry
auto GetRootDentry() -> Dentry *
获取根目录 dentry
Definition
vfs.cpp:96
vfs::GetMountTable
auto GetMountTable() -> MountTable &
获取全局挂载表实例
Definition
mount.cpp:234
vfs::Dentry
Dentry — 目录项缓存(路径名 ↔ Inode 的映射)
Definition
vfs.hpp:41
vfs::Inode
Inode — 文件元数据(独立于路径名)
Definition
vfs.hpp:16
vfs::MountPoint
挂载点
Definition
mount.hpp:15
vfs::MountPoint::root_dentry
Dentry * root_dentry
该文件系统的根 dentry
Definition
mount.hpp:27
vfs::MountPoint::device
BlockDevice * device
关联的块设备(可为 nullptr)
Definition
mount.hpp:23
vfs::MountPoint::mount_dentry
Dentry * mount_dentry
挂载点在父文件系统中的 dentry
Definition
mount.hpp:19
vfs::MountPoint::mount_path
const char * mount_path
挂载路径(如 "/mnt/disk")
Definition
mount.hpp:17
vfs::MountPoint::active
bool active
是否处于活动状态
Definition
mount.hpp:29
vfs::MountPoint::root_inode
Inode * root_inode
该文件系统的根 inode
Definition
mount.hpp:25
src
filesystem
vfs
include
mount.hpp
Generated by
1.9.8