aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/devfs/filesystem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/filesystem/devfs/filesystem.cpp')
-rw-r--r--kernel/src/filesystem/devfs/filesystem.cpp81
1 files changed, 0 insertions, 81 deletions
diff --git a/kernel/src/filesystem/devfs/filesystem.cpp b/kernel/src/filesystem/devfs/filesystem.cpp
deleted file mode 100644
index ce887ff3..00000000
--- a/kernel/src/filesystem/devfs/filesystem.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-#include <kernel/filesystem/devfs/filesystem.hpp>
-
-#include "kernel/filesystem/filesystem.hpp"
-#include <kernel/devices/storage/management.hpp>
-#include <kernel/filesystem/devfs/inode.hpp>
-#include <kernel/filesystem/device_inode.hpp>
-#include <kernel/filesystem/inode.hpp>
-#include <kernel/filesystem/type.hpp>
-
-#include <kapi/devices/device.hpp>
-
-#include <kstd/memory>
-
-#include <algorithm>
-#include <string_view>
-
-namespace kernel::filesystem::devfs
-{
- struct type final : kernel::filesystem::type
- {
- [[nodiscard]] auto name() const noexcept -> std::string_view override
- {
- return "devfs";
- }
-
- [[nodiscard]] auto requires_device() const noexcept -> bool override
- {
- return false;
- }
-
- [[nodiscard]] auto make_instance() const -> kstd::shared_ptr<kernel::filesystem::filesystem> override
- {
- return kstd::make_shared<filesystem>();
- }
- };
-
- [[gnu::used]]
- constexpr auto registration = type_registration<type>{};
-
- auto filesystem::mount(kstd::shared_ptr<kernel::filesystem::inode> const &) -> operation_result
- {
- m_root_inode = kstd::make_shared<inode>();
- build_device_inode_table();
-
- return operation_result::success;
- }
-
- auto filesystem::lookup(kstd::shared_ptr<kernel::filesystem::inode> const & parent, std::string_view name) const
- -> kstd::shared_ptr<kernel::filesystem::inode>
- {
- if (!parent || !parent->is_directory())
- {
- return nullptr;
- }
-
- if (parent.get() != m_root_inode.get())
- {
- return nullptr;
- }
-
- auto it = std::ranges::find_if(m_inodes, [&](auto const & dev_node) {
- if (auto device_inode_ptr = static_cast<device_inode *>(dev_node.get()))
- {
- return device_inode_ptr->device()->name() == name;
- }
- return false;
- });
- return (it != m_inodes.end()) ? *it : nullptr;
- }
-
- auto filesystem::build_device_inode_table() -> void
- {
- m_inodes.clear();
-
- auto storage_mgmt = devices::storage::management::get();
- std::ranges::for_each(storage_mgmt.all_controllers(), [&](auto const & controller) {
- std::ranges::for_each(controller->all_devices(),
- [&](auto const & device) { m_inodes.push_back(kstd::make_shared<device_inode>(device)); });
- });
- }
-} // namespace kernel::filesystem::devfs \ No newline at end of file