aboutsummaryrefslogtreecommitdiff
path: root/kernel/kernel/filesystem/filesystem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kernel/filesystem/filesystem.cpp')
-rw-r--r--kernel/kernel/filesystem/filesystem.cpp13
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 &