aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/filesystem')
-rw-r--r--kernel/src/filesystem/open_file_description.tests.cpp5
-rw-r--r--kernel/src/filesystem/vfs.cpp10
-rw-r--r--kernel/src/filesystem/vfs.tests.cpp16
3 files changed, 16 insertions, 15 deletions
diff --git a/kernel/src/filesystem/open_file_description.tests.cpp b/kernel/src/filesystem/open_file_description.tests.cpp
index db8eb49..ec35546 100644
--- a/kernel/src/filesystem/open_file_description.tests.cpp
+++ b/kernel/src/filesystem/open_file_description.tests.cpp
@@ -76,8 +76,9 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture,
REQUIRE_NOTHROW(setup_modules_from_img_and_init_vfs({"test_img_module"}, {image_path}));
auto & vfs = kernel::filesystem::vfs::get();
- auto ofd = vfs.open("/information/info_1.txt");
- REQUIRE(ofd != nullptr);
+ auto dentry = vfs.open("/information/info_1.txt");
+ REQUIRE(dentry != nullptr);
+ auto ofd = kstd::make_shared<kernel::filesystem::open_file_description>(dentry->get_inode());
THEN("the file can be read and the offset is updated")
{
diff --git a/kernel/src/filesystem/vfs.cpp b/kernel/src/filesystem/vfs.cpp
index 394e926..84c8047 100644
--- a/kernel/src/filesystem/vfs.cpp
+++ b/kernel/src/filesystem/vfs.cpp
@@ -7,7 +7,6 @@
#include "kernel/filesystem/filesystem.hpp"
#include "kernel/filesystem/mount.hpp"
#include "kernel/filesystem/mount_table.hpp"
-#include "kernel/filesystem/open_file_description.hpp"
#include "kernel/filesystem/rootfs/filesystem.hpp"
#include <kstd/memory>
@@ -65,14 +64,9 @@ namespace kernel::filesystem
return *active_vfs;
}
- auto vfs::open(std::string_view path) -> kstd::shared_ptr<open_file_description>
+ auto vfs::open(std::string_view path) -> kstd::shared_ptr<dentry>
{
- if (auto dentry = resolve_path(path))
- {
- return kstd::make_shared<open_file_description>(dentry->get_inode());
- }
-
- return nullptr;
+ return resolve_path(path);
}
auto vfs::do_mount(std::string_view source, std::string_view target) -> operation_result
diff --git a/kernel/src/filesystem/vfs.tests.cpp b/kernel/src/filesystem/vfs.tests.cpp
index 0a7b6c7..eba157d 100644
--- a/kernel/src/filesystem/vfs.tests.cpp
+++ b/kernel/src/filesystem/vfs.tests.cpp
@@ -1,7 +1,9 @@
#include "kernel/filesystem/vfs.hpp"
+#include "kernel/filesystem/open_file_description.hpp"
#include "kernel/test_support/filesystem/storage_boot_module_vfs_fixture.hpp"
+#include <kstd/memory>
#include <kstd/vector>
#include <catch2/catch_test_macros.hpp>
@@ -181,11 +183,12 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "VFS
auto info_1 = vfs.open("/information/info_1.txt");
REQUIRE(info_1 == nullptr);
- auto sheep_1 = vfs.open("/information/sheep_1.txt");
- REQUIRE(sheep_1 != nullptr);
+ auto dentry = vfs.open("/information/sheep_1.txt");
+ REQUIRE(dentry != nullptr);
+ auto sheep_1_ofd = kstd::make_shared<kernel::filesystem::open_file_description>(dentry->get_inode());
kstd::vector<std::byte> buffer(7);
- auto bytes_read = sheep_1->read(buffer.data(), buffer.size());
+ auto bytes_read = sheep_1_ofd->read(buffer.data(), buffer.size());
std::string_view buffer_as_str{reinterpret_cast<char *>(buffer.data()), bytes_read};
REQUIRE(buffer_as_str == "sheep_1");
@@ -207,13 +210,16 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "VFS
REQUIRE(sheep_1 != nullptr);
REQUIRE(goat_1 != nullptr);
+ auto sheep_1_ofd = kstd::make_shared<kernel::filesystem::open_file_description>(sheep_1->get_inode());
+ auto goat_1_ofd = kstd::make_shared<kernel::filesystem::open_file_description>(goat_1->get_inode());
+
kstd::vector<std::byte> sheep_buffer(7);
- auto bytes_read = sheep_1->read(sheep_buffer.data(), sheep_buffer.size());
+ auto bytes_read = sheep_1_ofd->read(sheep_buffer.data(), sheep_buffer.size());
std::string_view buffer_as_str{reinterpret_cast<char *>(sheep_buffer.data()), bytes_read};
REQUIRE(buffer_as_str == "sheep_1");
kstd::vector<std::byte> goat_buffer(6);
- bytes_read = goat_1->read(goat_buffer.data(), goat_buffer.size());
+ bytes_read = goat_1_ofd->read(goat_buffer.data(), goat_buffer.size());
buffer_as_str = std::string_view{reinterpret_cast<char *>(goat_buffer.data()), bytes_read};
REQUIRE(buffer_as_str == "goat_1");