diff options
Diffstat (limited to 'kernel/kernel/filesystem/filesystem.cpp')
| -rw-r--r-- | kernel/kernel/filesystem/filesystem.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/kernel/filesystem/filesystem.cpp b/kernel/kernel/filesystem/filesystem.cpp index f0b7fd28..cb60734f 100644 --- a/kernel/kernel/filesystem/filesystem.cpp +++ b/kernel/kernel/filesystem/filesystem.cpp @@ -6,8 +6,10 @@ #include <kapi/system.hpp> #include <kstd/memory.hpp> +#include <kstd/system_error.hpp> #include <array> +#include <expected> namespace kernel::filesystem { @@ -18,7 +20,8 @@ namespace kernel::filesystem }; } // namespace - auto filesystem::probe_and_mount(kstd::shared_ptr<inode> const & backing_inode) -> kstd::shared_ptr<filesystem> + auto filesystem::probe_and_mount(kstd::shared_ptr<inode> const & backing_inode) + -> std::expected<kstd::shared_ptr<filesystem>, kstd::error_code> { if (!backing_inode) { @@ -28,16 +31,16 @@ namespace kernel::filesystem for (auto & factory : filesystem_factories) { auto fs = factory(); - if (fs->mount(backing_inode) == operation_result::success) + if (fs->mount(backing_inode)) { return fs; } } - return nullptr; + return std::unexpected{make_error_code(kstd::errc::not_supported)}; } - auto filesystem::mount(kstd::shared_ptr<inode> const & backing_inode) -> operation_result + auto filesystem::mount(kstd::shared_ptr<inode> const & backing_inode) -> std::expected<void, kstd::error_code> { if (!backing_inode) { @@ -45,7 +48,7 @@ namespace kernel::filesystem } m_backing_inode = backing_inode; - return operation_result::success; + return {}; } auto filesystem::root_inode() const -> kstd::shared_ptr<inode> const & |
