|
SimpleKernel 1.17.0
|
进程级文件描述符表 More...
#include <file_descriptor.hpp>

Public Member Functions | |
| auto | Alloc (vfs::File *file) -> Expected< int > |
| 分配一个最小可用 fd 并关联 File | |
| auto | Get (int fd) -> vfs::File * |
| 获取 fd 对应的 File 对象 | |
| auto | Free (int fd) -> Expected< void > |
| 释放 fd | |
| auto | Dup (int old_fd, int new_fd=-1) -> Expected< int > |
| 复制文件描述符(用于 dup/dup2) | |
| auto | CloseAll () -> Expected< void > |
| 关闭所有文件描述符 | |
| auto | SetupStandardFiles (vfs::File *stdin_file, vfs::File *stdout_file, vfs::File *stderr_file) -> Expected< void > |
| 设置标准文件描述符 | |
| auto | GetOpenCount () const -> int |
| 获取已打开文件描述符数量 | |
构造/析构函数 | |
| FileDescriptorTable () | |
| FileDescriptorTable (const FileDescriptorTable &)=delete | |
| FileDescriptorTable (FileDescriptorTable &&other) | |
| auto | operator= (const FileDescriptorTable &) -> FileDescriptorTable &=delete |
| auto | operator= (FileDescriptorTable &&other) -> FileDescriptorTable & |
| ~FileDescriptorTable () | |
Static Public Attributes | |
| static constexpr int | kMaxFd = 64 |
| 最大文件描述符数 | |
| static constexpr int | kStdinFd = 0 |
| 标准文件描述符 | |
| static constexpr int | kStdoutFd = 1 |
| static constexpr int | kStderrFd = 2 |
Private Attributes | |
| std::array< vfs::File *, kMaxFd > | table_ |
| int | open_count_ {0} |
| SpinLock | lock_ {"fd_table"} |
进程级文件描述符表
每个进程(TaskControlBlock)持有一个 FdTable, 将整数 fd 映射到 File 对象。 fd 0/1/2 预留给 stdin/stdout/stderr。
Definition at line 23 of file file_descriptor.hpp.
| filesystem::FileDescriptorTable::FileDescriptorTable | ( | ) |
Definition at line 11 of file file_descriptor.cpp.
|
delete |
| filesystem::FileDescriptorTable::FileDescriptorTable | ( | FileDescriptorTable && | other | ) |
Definition at line 21 of file file_descriptor.cpp.
| filesystem::FileDescriptorTable::~FileDescriptorTable | ( | ) |
Definition at line 14 of file file_descriptor.cpp.

分配一个最小可用 fd 并关联 File
| file | 要关联的 File 对象 |
Definition at line 61 of file file_descriptor.cpp.
| auto filesystem::FileDescriptorTable::CloseAll | ( | ) | -> Expected<void> |
关闭所有文件描述符
Definition at line 144 of file file_descriptor.cpp.

| auto filesystem::FileDescriptorTable::Dup | ( | int | old_fd, |
| int | new_fd = -1 |
||
| ) | -> Expected<int> |
复制文件描述符(用于 dup/dup2)
| old_fd | 原文件描述符 |
| new_fd | 目标文件描述符(若为 -1 则分配最小可用) |
Definition at line 106 of file file_descriptor.cpp.
| auto filesystem::FileDescriptorTable::Free | ( | int | fd | ) | -> Expected<void> |
释放 fd
| fd | 要释放的文件描述符 |
Definition at line 89 of file file_descriptor.cpp.
| auto filesystem::FileDescriptorTable::Get | ( | int | fd | ) | -> vfs::File* |
| auto filesystem::FileDescriptorTable::GetOpenCount | ( | ) | const -> int |
|
delete |
| auto filesystem::FileDescriptorTable::operator= | ( | FileDescriptorTable && | other | ) | -> FileDescriptorTable& |
Definition at line 33 of file file_descriptor.cpp.

| auto filesystem::FileDescriptorTable::SetupStandardFiles | ( | vfs::File * | stdin_file, |
| vfs::File * | stdout_file, | ||
| vfs::File * | stderr_file | ||
| ) | -> Expected<void> |
设置标准文件描述符
| stdin_file | stdin 文件对象 |
| stdout_file | stdout 文件对象 |
| stderr_file | stderr 文件对象 |
Definition at line 159 of file file_descriptor.cpp.
|
staticconstexpr |
最大文件描述符数
Definition at line 26 of file file_descriptor.hpp.
|
staticconstexpr |
Definition at line 31 of file file_descriptor.hpp.
|
staticconstexpr |
标准文件描述符
Definition at line 29 of file file_descriptor.hpp.
|
staticconstexpr |
Definition at line 30 of file file_descriptor.hpp.
|
private |
Definition at line 101 of file file_descriptor.hpp.
|
private |
Definition at line 100 of file file_descriptor.hpp.
Definition at line 99 of file file_descriptor.hpp.