diff options
Diffstat (limited to 'kernel/src/filesystem/devfs/filesystem.cpp')
| -rw-r--r-- | kernel/src/filesystem/devfs/filesystem.cpp | 81 |
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 |
