aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/file_descriptor_table.cpp
diff options
context:
space:
mode:
authorMarcel Braun <marcel.braun@ost.ch>2026-04-28 09:32:53 +0200
committerMarcel Braun <marcel.braun@ost.ch>2026-04-28 09:32:53 +0200
commit9d2ec7c3999a550a5c5cdbc2bd952452cd4b7fc0 (patch)
treeb1e9347c3f03302afb1d0851eefba25dbf0f1c82 /kernel/src/filesystem/file_descriptor_table.cpp
parentf6f10575f75ac23d06e1d94f7861611503daa7af (diff)
parentd349812c2e1e6a7d62f53d1c959137794e8a648d (diff)
downloadteachos-9d2ec7c3999a550a5c5cdbc2bd952452cd4b7fc0.tar.xz
teachos-9d2ec7c3999a550a5c5cdbc2bd952452cd4b7fc0.zip
Merge branch 'refactoring' into 'develop-BA-FS26'
Refactoring See merge request teachos/kernel!27
Diffstat (limited to 'kernel/src/filesystem/file_descriptor_table.cpp')
-rw-r--r--kernel/src/filesystem/file_descriptor_table.cpp98
1 files changed, 0 insertions, 98 deletions
diff --git a/kernel/src/filesystem/file_descriptor_table.cpp b/kernel/src/filesystem/file_descriptor_table.cpp
deleted file mode 100644
index db7692b..0000000
--- a/kernel/src/filesystem/file_descriptor_table.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-#include <kernel/filesystem/file_descriptor_table.hpp>
-
-#include <kernel/filesystem/open_file_description.hpp>
-
-#include <kapi/system.hpp>
-
-#include <kstd/memory>
-
-#include <algorithm>
-#include <cstddef>
-#include <optional>
-
-namespace
-{
- constinit auto static global_file_descriptor_table = std::optional<kernel::filesystem::file_descriptor_table>{};
-} // namespace
-
-namespace kernel::filesystem
-{
- auto file_descriptor_table::init() -> void
- {
- if (global_file_descriptor_table)
- {
- kapi::system::panic("[FILESYSTEM] File descriptor table has already been initialized.");
- }
-
- global_file_descriptor_table.emplace(file_descriptor_table{});
- }
-
- auto file_descriptor_table::get() -> file_descriptor_table &
- {
- if (!global_file_descriptor_table)
- {
- kapi::system::panic("[FILESYSTEM] File descriptor table has not been initialized.");
- }
-
- return *global_file_descriptor_table;
- }
-
- auto file_descriptor_table::add_file(kstd::shared_ptr<open_file_description> const & file_description) -> int
- {
- if (!file_description)
- {
- return -1;
- }
-
- auto it = std::ranges::find_if(m_open_files, [](auto const & open_file) { return open_file == nullptr; });
- if (it != m_open_files.end())
- {
- *it = file_description;
- return static_cast<int>(it - m_open_files.begin());
- }
-
- m_open_files.push_back(file_description);
- return static_cast<int>(m_open_files.size() - 1);
- }
-
- auto file_descriptor_table::get_file(int fd) const -> kstd::shared_ptr<open_file_description>
- {
- if (fd < 0)
- {
- return nullptr;
- }
-
- auto const index = static_cast<size_t>(fd);
- if (index >= m_open_files.size())
- {
- return nullptr;
- }
-
- return m_open_files.at(index);
- }
-
- auto file_descriptor_table::remove_file(int fd) -> int
- {
- if (fd < 0)
- {
- return -1;
- }
-
- auto const index = static_cast<size_t>(fd);
- if (index >= m_open_files.size())
- {
- return -1;
- }
-
- m_open_files.at(index) = nullptr;
- return 0;
- }
-} // namespace kernel::filesystem
-
-namespace kernel::tests::filesystem::file_descriptor_table
-{
- auto deinit() -> void
- {
- global_file_descriptor_table.reset();
- }
-} // namespace kernel::tests::filesystem::file_descriptor_table