diff options
Diffstat (limited to 'kernel/src')
| -rw-r--r-- | kernel/src/filesystem/file_descriptor_table.cpp | 12 | ||||
| -rw-r--r-- | kernel/src/filesystem/file_descriptor_table.tests.cpp | 62 | ||||
| -rw-r--r-- | kernel/src/filesystem/open_file_descriptor.cpp (renamed from kernel/src/filesystem/open_file_description.cpp) | 13 | ||||
| -rw-r--r-- | kernel/src/filesystem/open_file_descriptor.tests.cpp (renamed from kernel/src/filesystem/open_file_description.tests.cpp) | 57 | ||||
| -rw-r--r-- | kernel/src/filesystem/vfs.tests.cpp | 8 | ||||
| -rw-r--r-- | kernel/src/main.cpp | 16 |
6 files changed, 83 insertions, 85 deletions
diff --git a/kernel/src/filesystem/file_descriptor_table.cpp b/kernel/src/filesystem/file_descriptor_table.cpp index db7692b..9361f37 100644 --- a/kernel/src/filesystem/file_descriptor_table.cpp +++ b/kernel/src/filesystem/file_descriptor_table.cpp @@ -1,6 +1,6 @@ #include <kernel/filesystem/file_descriptor_table.hpp> -#include <kernel/filesystem/open_file_description.hpp> +#include <kernel/filesystem/open_file_descriptor.hpp> #include <kapi/system.hpp> @@ -37,9 +37,9 @@ namespace kernel::filesystem return *global_file_descriptor_table; } - auto file_descriptor_table::add_file(kstd::shared_ptr<open_file_description> const & file_description) -> int + auto file_descriptor_table::add_file(kstd::shared_ptr<open_file_descriptor> const & file_descriptor) -> int { - if (!file_description) + if (!file_descriptor) { return -1; } @@ -47,15 +47,15 @@ namespace kernel::filesystem auto it = std::ranges::find_if(m_open_files, [](auto const & open_file) { return open_file == nullptr; }); if (it != m_open_files.end()) { - *it = file_description; + *it = file_descriptor; return static_cast<int>(it - m_open_files.begin()); } - m_open_files.push_back(file_description); + m_open_files.push_back(file_descriptor); return static_cast<int>(m_open_files.size() - 1); } - auto file_descriptor_table::get_file(int fd) const -> kstd::shared_ptr<open_file_description> + auto file_descriptor_table::get_file(int fd) const -> kstd::shared_ptr<open_file_descriptor> { if (fd < 0) { diff --git a/kernel/src/filesystem/file_descriptor_table.tests.cpp b/kernel/src/filesystem/file_descriptor_table.tests.cpp index 86ed7bf..dd04e00 100644 --- a/kernel/src/filesystem/file_descriptor_table.tests.cpp +++ b/kernel/src/filesystem/file_descriptor_table.tests.cpp @@ -1,6 +1,6 @@ #include <kernel/filesystem/file_descriptor_table.hpp> -#include <kernel/filesystem/open_file_description.hpp> +#include <kernel/filesystem/open_file_descriptor.hpp> #include <kernel/test_support/filesystem/inode.hpp> #include <kstd/memory> @@ -11,18 +11,18 @@ SCENARIO("File descriptor table add/get file", "[filesystem][file_descriptor_table]") { - GIVEN("a file descriptor table and an open file description") + GIVEN("a file descriptor table and an open file descriptor") { auto & table = kernel::filesystem::file_descriptor_table::get(); auto inode = kstd::make_shared<kernel::tests::filesystem::inode>(); - auto file_description_1 = kstd::make_shared<kernel::filesystem::open_file_description>(inode); - auto file_description_2 = kstd::make_shared<kernel::filesystem::open_file_description>(inode); + auto file_descriptor_1 = kstd::make_shared<kernel::filesystem::open_file_descriptor>(inode); + auto file_descriptor_2 = kstd::make_shared<kernel::filesystem::open_file_descriptor>(inode); - WHEN("adding the open file description to the file descriptor table") + WHEN("adding the open file descriptor to the file descriptor table") { - auto fd_1 = table.add_file(file_description_1); - auto fd_2 = table.add_file(file_description_2); - auto fd_3 = table.add_file(file_description_2); + auto fd_1 = table.add_file(file_descriptor_1); + auto fd_2 = table.add_file(file_descriptor_2); + auto fd_3 = table.add_file(file_descriptor_2); THEN("a valid file descriptor is returned") { @@ -31,67 +31,67 @@ SCENARIO("File descriptor table add/get file", "[filesystem][file_descriptor_tab REQUIRE(fd_3 == 2); } - THEN("the file description can be retrieved using the returned file descriptor") + THEN("the file descriptor can be retrieved using the returned file descriptor") { - auto retrieved_description = table.get_file(fd_1); - REQUIRE(retrieved_description == file_description_1); + auto retrieved_descriptor = table.get_file(fd_1); + REQUIRE(retrieved_descriptor == file_descriptor_1); } } } - GIVEN("a invalid open file description") + GIVEN("a invalid open file descriptor") { auto & table = kernel::filesystem::file_descriptor_table::get(); - THEN("adding a null file description returns an error code") + THEN("adding a null file descriptor returns an error code") { auto fd = table.add_file(nullptr); REQUIRE(fd == -1); } - THEN("retrieving a file description with a negative file descriptor returns a null pointer") + THEN("retrieving a file descriptor with a negative file descriptor returns a null pointer") { - auto retrieved_description = table.get_file(-1); - REQUIRE(retrieved_description == nullptr); + auto retrieved_descriptor = table.get_file(-1); + REQUIRE(retrieved_descriptor == nullptr); } - THEN("retrieving a file description with an out-of-bounds file descriptor returns a null pointer") + THEN("retrieving a file descriptor with an out-of-bounds file descriptor returns a null pointer") { - auto retrieved_description = table.get_file(1000); - REQUIRE(retrieved_description == nullptr); + auto retrieved_descriptor = table.get_file(1000); + REQUIRE(retrieved_descriptor == nullptr); } } } SCENARIO("File descriptor table remove file", "[filesystem][file_descriptor_table]") { - GIVEN("a file descriptor table with an open file description") + GIVEN("a file descriptor table with an open file descriptor") { auto & table = kernel::filesystem::file_descriptor_table::get(); auto inode = kstd::make_shared<kernel::tests::filesystem::inode>(); - auto file_description = kstd::make_shared<kernel::filesystem::open_file_description>(inode); - auto fd = table.add_file(file_description); + auto file_descriptor = kstd::make_shared<kernel::filesystem::open_file_descriptor>(inode); + auto fd = table.add_file(file_descriptor); - WHEN("removing the file description using the file descriptor") + WHEN("removing the file descriptor using the file descriptor") { table.remove_file(fd); - THEN("the file description can no longer be retrieved using the file descriptor") + THEN("the file descriptor can no longer be retrieved using the file descriptor") { - auto retrieved_description = table.get_file(fd); - REQUIRE(retrieved_description == nullptr); + auto retrieved_descriptor = table.get_file(fd); + REQUIRE(retrieved_descriptor == nullptr); } } - WHEN("removing a file description the other file descriptor keep the same index") + WHEN("removing a file descriptor the other file descriptor keep the same index") { - auto fd2 = table.add_file(file_description); + auto fd2 = table.add_file(file_descriptor); table.remove_file(fd); - THEN("the second file description can still be retrieved using its file descriptor") + THEN("the second file descriptor can still be retrieved using its file descriptor") { - auto retrieved_description = table.get_file(fd2); - REQUIRE(retrieved_description == file_description); + auto retrieved_descriptor = table.get_file(fd2); + REQUIRE(retrieved_descriptor == file_descriptor); } } } diff --git a/kernel/src/filesystem/open_file_description.cpp b/kernel/src/filesystem/open_file_descriptor.cpp index 3033e2b..25bffbd 100644 --- a/kernel/src/filesystem/open_file_description.cpp +++ b/kernel/src/filesystem/open_file_descriptor.cpp @@ -1,6 +1,5 @@ -#include <kernel/filesystem/open_file_description.hpp> - #include <kernel/filesystem/inode.hpp> +#include <kernel/filesystem/open_file_descriptor.hpp> #include <kstd/memory> #include <kstd/os/error.hpp> @@ -9,31 +8,31 @@ namespace kernel::filesystem { - open_file_description::open_file_description(kstd::shared_ptr<inode> const & inode) + open_file_descriptor::open_file_descriptor(kstd::shared_ptr<inode> const & inode) : m_inode(inode) , m_offset(0) { if (!inode) { - kstd::os::panic("[FILESYSTEM] open_file_description constructed with null inode."); + kstd::os::panic("[FILESYSTEM] open_file_descriptor constructed with null inode."); } } - auto open_file_description::read(void * buffer, size_t size) -> size_t + auto open_file_descriptor::read(void * buffer, size_t size) -> size_t { auto read_bytes = m_inode->read(buffer, m_offset, size); m_offset += read_bytes; return read_bytes; } - auto open_file_description::write(void const * buffer, size_t size) -> size_t + auto open_file_descriptor::write(void const * buffer, size_t size) -> size_t { auto written_bytes = m_inode->write(buffer, m_offset, size); m_offset += written_bytes; return written_bytes; } - auto open_file_description::offset() const -> size_t + auto open_file_descriptor::offset() const -> size_t { return m_offset; } diff --git a/kernel/src/filesystem/open_file_description.tests.cpp b/kernel/src/filesystem/open_file_descriptor.tests.cpp index ce3c81a..095e203 100644 --- a/kernel/src/filesystem/open_file_description.tests.cpp +++ b/kernel/src/filesystem/open_file_descriptor.tests.cpp @@ -1,5 +1,4 @@ -#include <kernel/filesystem/open_file_description.hpp> - +#include <kernel/filesystem/open_file_descriptor.hpp> #include <kernel/filesystem/vfs.hpp> #include <kernel/test_support/filesystem/inode.hpp> #include <kernel/test_support/filesystem/storage_boot_module_vfs_fixture.hpp> @@ -14,63 +13,63 @@ #include <filesystem> #include <string_view> -SCENARIO("Open file description construction", "[filesystem][open_file_description]") +SCENARIO("Open file descriptor construction", "[filesystem][open_file_descriptor]") { - GIVEN("an inode and an open file description for that inode") + GIVEN("an inode and an open file descriptor for that inode") { auto inode = kstd::make_shared<kernel::tests::filesystem::inode>(); - auto file_description = kernel::filesystem::open_file_description{inode}; + auto file_descriptor = kernel::filesystem::open_file_descriptor{inode}; THEN("the initial offset is zero") { - REQUIRE(file_description.offset() == 0); + REQUIRE(file_descriptor.offset() == 0); } } } -SCENARIO("Open file description read/write offset management", "[filesystem][open_file_description]") +SCENARIO("Open file descriptor read/write offset management", "[filesystem][open_file_descriptor]") { - GIVEN("an inode that tracks read/write calls and an open file description for that inode") + GIVEN("an inode that tracks read/write calls and an open file descriptor for that inode") { auto inode = kstd::make_shared<kernel::tests::filesystem::inode>(); - auto file_description = kernel::filesystem::open_file_description{inode}; + auto file_descriptor = kernel::filesystem::open_file_descriptor{inode}; THEN("the offset is updated correctly after reads") { - REQUIRE(file_description.read(nullptr, 100) == 100); - REQUIRE(file_description.offset() == 100); - REQUIRE(file_description.read(nullptr, 50) == 50); - REQUIRE(file_description.offset() == 150); + REQUIRE(file_descriptor.read(nullptr, 100) == 100); + REQUIRE(file_descriptor.offset() == 100); + REQUIRE(file_descriptor.read(nullptr, 50) == 50); + REQUIRE(file_descriptor.offset() == 150); } THEN("the offset is updated correctly after writes") { - REQUIRE(file_description.write(nullptr, 200) == 200); - REQUIRE(file_description.offset() == 200); - REQUIRE(file_description.write(nullptr, 25) == 25); - REQUIRE(file_description.offset() == 225); + REQUIRE(file_descriptor.write(nullptr, 200) == 200); + REQUIRE(file_descriptor.offset() == 200); + REQUIRE(file_descriptor.write(nullptr, 25) == 25); + REQUIRE(file_descriptor.offset() == 225); } THEN("reads and writes both update the same offset") { - REQUIRE(file_description.read(nullptr, 10) == 10); - REQUIRE(file_description.offset() == 10); - REQUIRE(file_description.write(nullptr, 20) == 20); - REQUIRE(file_description.offset() == 30); - REQUIRE(file_description.read(nullptr, 5) == 5); - REQUIRE(file_description.offset() == 35); - REQUIRE(file_description.write(nullptr, 15) == 15); - REQUIRE(file_description.offset() == 50); + REQUIRE(file_descriptor.read(nullptr, 10) == 10); + REQUIRE(file_descriptor.offset() == 10); + REQUIRE(file_descriptor.write(nullptr, 20) == 20); + REQUIRE(file_descriptor.offset() == 30); + REQUIRE(file_descriptor.read(nullptr, 5) == 5); + REQUIRE(file_descriptor.offset() == 35); + REQUIRE(file_descriptor.write(nullptr, 15) == 15); + REQUIRE(file_descriptor.offset() == 50); } } } -SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, - "Open file description read with real image", "[filesystem][open_file_description][img]") +SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "Open file descriptor read with real image", + "[filesystem][open_file_descriptor][img]") { auto const image_path = std::filesystem::path{KERNEL_TEST_ASSETS_DIR} / "ext2_1KB_fs.img"; - GIVEN("an open file description for a file in a real image") + GIVEN("an open file descriptor for a file in a real image") { REQUIRE(std::filesystem::exists(image_path)); REQUIRE_NOTHROW(setup_modules_from_img_and_init_vfs({"test_img_module"}, {image_path})); @@ -78,7 +77,7 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, auto & vfs = kernel::filesystem::vfs::get(); auto dentry = vfs.open("/information/info_1.txt"); REQUIRE(dentry != nullptr); - auto ofd = kstd::make_shared<kernel::filesystem::open_file_description>(dentry->get_inode()); + auto ofd = kstd::make_shared<kernel::filesystem::open_file_descriptor>(dentry->get_inode()); THEN("the file can be read and the offset is updated") { diff --git a/kernel/src/filesystem/vfs.tests.cpp b/kernel/src/filesystem/vfs.tests.cpp index 9cadb4d..979ea42 100644 --- a/kernel/src/filesystem/vfs.tests.cpp +++ b/kernel/src/filesystem/vfs.tests.cpp @@ -1,6 +1,6 @@ #include <kernel/filesystem/vfs.hpp> -#include <kernel/filesystem/open_file_description.hpp> +#include <kernel/filesystem/open_file_descriptor.hpp> #include <kernel/test_support/filesystem/storage_boot_module_vfs_fixture.hpp> #include <kstd/memory> @@ -185,7 +185,7 @@ SCENARIO_METHOD(kernel::tests::filesystem::storage_boot_module_vfs_fixture, "VFS 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()); + auto sheep_1_ofd = kstd::make_shared<kernel::filesystem::open_file_descriptor>(dentry->get_inode()); kstd::vector<std::byte> buffer(7); auto bytes_read = sheep_1_ofd->read(buffer.data(), buffer.size()); @@ -210,8 +210,8 @@ 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()); + auto sheep_1_ofd = kstd::make_shared<kernel::filesystem::open_file_descriptor>(sheep_1->get_inode()); + auto goat_1_ofd = kstd::make_shared<kernel::filesystem::open_file_descriptor>(goat_1->get_inode()); kstd::vector<std::byte> sheep_buffer(7); auto bytes_read = sheep_1_ofd->read(sheep_buffer.data(), sheep_buffer.size()); diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp index 9f4ec1e..9878d20 100644 --- a/kernel/src/main.cpp +++ b/kernel/src/main.cpp @@ -1,7 +1,7 @@ #include <kernel/devices/storage/management.hpp> #include <kernel/filesystem/device_inode.hpp> #include <kernel/filesystem/file_descriptor_table.hpp> -#include <kernel/filesystem/open_file_description.hpp> +#include <kernel/filesystem/open_file_descriptor.hpp> #include <kernel/filesystem/vfs.hpp> #include <kernel/memory.hpp> @@ -36,7 +36,7 @@ auto test_device_names() -> void }); } -auto test_file_description_manually() -> void +auto test_file_descriptor_manually() -> void { // setup auto fd_table = kernel::filesystem::file_descriptor_table::get(); @@ -45,7 +45,7 @@ auto test_file_description_manually() -> void auto dev_node = kstd::make_shared<kernel::filesystem::device_inode>(device); - auto ofd = kstd::make_shared<kernel::filesystem::open_file_description>(dev_node); + auto ofd = kstd::make_shared<kernel::filesystem::open_file_descriptor>(dev_node); auto fd_index = fd_table.add_file(ofd); // use: read two bytes and write two again @@ -71,7 +71,7 @@ auto test_file_description_manually() -> void fd_table.remove_file(fd_index); // use: read four bytes again -> two old bytes two new bytes - auto ofd1 = kstd::make_shared<kernel::filesystem::open_file_description>(dev_node); + auto ofd1 = kstd::make_shared<kernel::filesystem::open_file_descriptor>(dev_node); fd_index = fd_table.add_file(ofd1); auto fd1 = fd_table.get_file(fd_index); @@ -96,7 +96,7 @@ auto test_device_with_vfs() -> void } auto fd_table = kernel::filesystem::file_descriptor_table::get(); - auto ofd = kstd::make_shared<kernel::filesystem::open_file_description>(dentry->get_inode()); + auto ofd = kstd::make_shared<kernel::filesystem::open_file_descriptor>(dentry->get_inode()); auto fd = fd_table.add_file(ofd); kstd::vector<std::byte> buffer{2}; auto file = fd_table.get_file(fd); @@ -122,7 +122,7 @@ auto test_file_lookup() -> void } kstd::vector<std::byte> buffer{32}; - auto ofd = kstd::make_shared<kernel::filesystem::open_file_description>(dentry->get_inode()); + auto ofd = kstd::make_shared<kernel::filesystem::open_file_descriptor>(dentry->get_inode()); auto number_of_read_bytes = ofd->read(buffer.data(), buffer.size()); kstd::println("read bytes: {}", number_of_read_bytes); kstd::println("buffer: {::#04x}", buffer); @@ -175,8 +175,8 @@ auto run_test_code() -> void test_device_names(); kstd::println("---------------------------------"); - kstd::println("[TEST] file description manually"); - test_file_description_manually(); + kstd::println("[TEST] file descriptor manually"); + test_file_descriptor_manually(); kstd::println("---------------------------------"); kstd::println("[TEST] device with VFS"); |
