aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/CMakeLists.txt3
-rw-r--r--kernel/include/kernel/filesystem/device_file.hpp32
-rw-r--r--kernel/include/kernel/filesystem/device_inode.hpp14
-rw-r--r--kernel/include/kernel/filesystem/ext2/ext2_inode.hpp6
-rw-r--r--kernel/include/kernel/filesystem/file.hpp25
-rw-r--r--kernel/include/kernel/filesystem/inode.hpp7
-rw-r--r--kernel/include/kernel/filesystem/inode_file.hpp24
-rw-r--r--kernel/include/kernel/filesystem/open_file_description.hpp6
-rw-r--r--kernel/src/filesystem/device_file.cpp128
-rw-r--r--kernel/src/filesystem/device_inode.cpp100
-rw-r--r--kernel/src/filesystem/ext2/ext2_inode.cpp15
-rw-r--r--kernel/src/filesystem/file.cpp20
-rw-r--r--kernel/src/filesystem/inode_file.cpp34
-rw-r--r--kernel/src/filesystem/open_file_description.cpp14
-rw-r--r--kernel/src/filesystem/vfs.cpp6
-rw-r--r--kernel/src/main.cpp9
16 files changed, 138 insertions, 305 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt
index ec0d4e2..16ebb8b 100644
--- a/kernel/CMakeLists.txt
+++ b/kernel/CMakeLists.txt
@@ -25,12 +25,9 @@ add_executable("kernel"
"src/filesystem/ext2/ext2_filesystem.cpp"
"src/filesystem/ext2/ext2_inode.cpp"
"src/filesystem/custody.cpp"
- "src/filesystem/device_file.cpp"
"src/filesystem/device_inode.cpp"
- "src/filesystem/file.cpp"
"src/filesystem/file_descriptor_table.cpp"
"src/filesystem/filesystem.cpp"
- "src/filesystem/inode_file.cpp"
"src/filesystem/inode.cpp"
"src/filesystem/mount.cpp"
"src/filesystem/open_file_description.cpp"
diff --git a/kernel/include/kernel/filesystem/device_file.hpp b/kernel/include/kernel/filesystem/device_file.hpp
deleted file mode 100644
index 22ddb49..0000000
--- a/kernel/include/kernel/filesystem/device_file.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_FILE_HPP
-
-#include "kernel/devices/block_device.hpp"
-#include "kernel/devices/device.hpp"
-#include "kernel/filesystem/file.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct inode;
-
- struct device_file : file
- {
- explicit device_file(kstd::shared_ptr<inode> const & inode);
-
- auto read(void * buffer, size_t offset, size_t size) const -> size_t override;
- auto write(void const * buffer, size_t offset, size_t size) -> size_t override;
-
- private:
- using block_op = void (*)(size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
- std::byte * scratch, void * buffer);
- auto process_blocks(size_t offset, size_t size, void * buffer, block_op op) const -> size_t;
-
- [[nodiscard]] auto device() const -> kstd::shared_ptr<devices::device> const &;
- };
-} // namespace filesystem
-
-#endif
diff --git a/kernel/include/kernel/filesystem/device_inode.hpp b/kernel/include/kernel/filesystem/device_inode.hpp
index 10e40b3..ce0f91c 100644
--- a/kernel/include/kernel/filesystem/device_inode.hpp
+++ b/kernel/include/kernel/filesystem/device_inode.hpp
@@ -1,24 +1,28 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP
+#include "kernel/devices/block_device.hpp"
#include "kernel/devices/device.hpp"
#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
+#include <cstddef>
+
namespace filesystem
{
- struct file;
-
struct device_inode : inode
{
explicit device_inode(kstd::shared_ptr<devices::device> const & device);
- [[nodiscard]] auto open_file() -> kstd::shared_ptr<file> override;
-
- [[nodiscard]] auto device() const -> kstd::shared_ptr<devices::device> const &;
+ auto read(void * buffer, size_t offset, size_t size) const -> size_t override;
+ auto write(void const * buffer, size_t offset, size_t size) -> size_t override;
private:
+ using block_op = void (*)(size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
+ std::byte * scratch, void * buffer);
+ auto process_blocks(size_t offset, size_t size, void * buffer, block_op op) const -> size_t;
+
kstd::shared_ptr<devices::device> m_device;
};
} // namespace filesystem
diff --git a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
index e6e8e99..5f4d16a 100644
--- a/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
+++ b/kernel/include/kernel/filesystem/ext2/ext2_inode.hpp
@@ -2,18 +2,20 @@
#define TEACH_OS_KERNEL_FILESYSTEM_EXT2_INODE_HPP
#include "kernel/filesystem/ext2/ext2_file.hpp"
-#include "kernel/filesystem/file.hpp"
#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
+#include <cstddef>
+
namespace filesystem::ext2
{
struct ext2_inode : inode
{
explicit ext2_inode();
- [[nodiscard]] auto open_file() -> kstd::shared_ptr<filesystem::file> override;
+ auto read(void * buffer, size_t offset, size_t size) const -> size_t override;
+ auto write(void const * buffer, size_t offset, size_t size) -> size_t override;
private:
kstd::shared_ptr<ext2_file> m_file;
diff --git a/kernel/include/kernel/filesystem/file.hpp b/kernel/include/kernel/filesystem/file.hpp
deleted file mode 100644
index 522f078..0000000
--- a/kernel/include/kernel/filesystem/file.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_FILE_HPP
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct inode;
-
- struct file
- {
- explicit file(kstd::shared_ptr<inode> const & inode);
- virtual ~file() = default;
-
- virtual auto read(void * buffer, size_t offset, size_t size) const -> size_t = 0;
- virtual auto write(void const * buffer, size_t offset, size_t size) -> size_t = 0;
-
- protected:
- kstd::shared_ptr<inode> m_inode;
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/include/kernel/filesystem/inode.hpp b/kernel/include/kernel/filesystem/inode.hpp
index 1083d13..94ccd89 100644
--- a/kernel/include/kernel/filesystem/inode.hpp
+++ b/kernel/include/kernel/filesystem/inode.hpp
@@ -3,10 +3,10 @@
#include <kstd/memory>
+#include <cstddef>
+
namespace filesystem
{
- struct file;
-
struct inode : kstd::enable_shared_from_this<inode>
{
enum class inode_kind
@@ -20,7 +20,8 @@ namespace filesystem
virtual ~inode() = default;
- [[nodiscard]] virtual auto open_file() -> kstd::shared_ptr<file> = 0;
+ virtual auto read(void * buffer, size_t offset, size_t size) const -> size_t = 0;
+ virtual auto write(void const * buffer, size_t offset, size_t size) -> size_t = 0;
[[nodiscard]] auto is_directory() const -> bool;
[[nodiscard]] auto is_regular() const -> bool;
diff --git a/kernel/include/kernel/filesystem/inode_file.hpp b/kernel/include/kernel/filesystem/inode_file.hpp
deleted file mode 100644
index f87b77c..0000000
--- a/kernel/include/kernel/filesystem/inode_file.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
-#define TEACH_OS_KERNEL_FILESYSTEM_INODE_FILE_HPP
-
-#include "kernel/filesystem/file.hpp"
-#include "kernel/filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- struct inode;
-
- struct inode_file : file
- {
- explicit inode_file(kstd::shared_ptr<inode> const & inode);
-
- auto read(void * buffer, size_t offset, size_t size) const -> size_t override;
- auto write(void const * buffer, size_t offset, size_t size) -> size_t override;
- };
-} // namespace filesystem
-
-#endif \ No newline at end of file
diff --git a/kernel/include/kernel/filesystem/open_file_description.hpp b/kernel/include/kernel/filesystem/open_file_description.hpp
index 5ff094d..3c97d50 100644
--- a/kernel/include/kernel/filesystem/open_file_description.hpp
+++ b/kernel/include/kernel/filesystem/open_file_description.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_OPEN_FILE_DESCRIPTION_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_OPEN_FILE_DESCRIPTION_HPP
-#include "file.hpp"
+#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
@@ -11,7 +11,7 @@ namespace filesystem
{
struct open_file_description
{
- open_file_description(kstd::shared_ptr<file> const & file);
+ open_file_description(kstd::shared_ptr<inode> const & inode);
~open_file_description() = default;
@@ -19,7 +19,7 @@ namespace filesystem
auto write(void const * buffer, size_t size) -> size_t;
private:
- kstd::shared_ptr<file> m_file;
+ kstd::shared_ptr<inode> m_inode;
size_t m_offset;
};
diff --git a/kernel/src/filesystem/device_file.cpp b/kernel/src/filesystem/device_file.cpp
deleted file mode 100644
index 26c7511..0000000
--- a/kernel/src/filesystem/device_file.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-#include "kernel/filesystem/device_file.hpp"
-
-#include "kapi/system.hpp"
-
-#include "kernel/devices/block_device.hpp"
-#include "kernel/devices/device.hpp"
-#include "kernel/filesystem/device_inode.hpp"
-#include "kernel/filesystem/file.hpp"
-#include "kernel/filesystem/inode.hpp"
-
-#include <kstd/cstring>
-#include <kstd/memory>
-#include <kstd/vector>
-
-#include <algorithm>
-#include <cstddef>
-
-namespace filesystem
-{
- device_file::device_file(kstd::shared_ptr<inode> const & inode)
- : file(inode)
- {
- if (!m_inode->is_device())
- {
- kapi::system::panic("[FILESYSTEM] device_file constructed with non-device inode.");
- }
- }
-
- auto device_file::read(void * buffer, size_t offset, size_t size) const -> size_t
- {
- if (device()->is_block_device())
- {
- return process_blocks(offset, size, buffer,
- [](size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
- std::byte * scratch, void * buffer) {
- auto * out = static_cast<std::byte *>(buffer);
- if (off == 0 && len == device->block_size())
- {
- device->read_block(idx, out + done);
- }
- else
- {
- device->read_block(idx, scratch);
- kstd::libc::memcpy(out + done, scratch + off, len);
- }
- });
- }
- else
- {
- kapi::system::panic("[FILESYSTEM] device_file::read called on non-block device.");
- }
- }
-
- auto device_file::write(void const * buffer, size_t offset, size_t size) -> size_t
- {
- if (device()->is_block_device())
- {
- return process_blocks(offset, size, const_cast<void *>(buffer),
- [](size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
- std::byte * scratch, void * buffer) {
- auto const * in = static_cast<std::byte const *>(buffer);
- if (off == 0 && len == device->block_size())
- {
- device->write_block(idx, in + done);
- }
- else
- {
- device->read_block(idx, scratch);
- kstd::libc::memcpy(scratch + off, in + done, len);
- device->write_block(idx, scratch);
- }
- });
- }
- else
- {
- kapi::system::panic("[FILESYSTEM] device_file::write called on non-block device.");
- }
- }
-
- auto device_file::process_blocks(size_t offset, size_t size, void * buffer, block_op op) const -> size_t
- {
- if (buffer == nullptr)
- {
- kapi::system::panic("[FILESYSTEM] device_file::process_blocks called with null buffer.");
- }
-
- if (size == 0)
- {
- return 0;
- }
-
- auto * block_dev = static_cast<devices::block_device *>(device().get());
- if (block_dev == nullptr)
- {
- kapi::system::panic("[FILESYSTEM] device_file: expected block_device.");
- }
-
- size_t const block_size = block_dev->block_size();
- size_t const capacity = block_dev->capacity();
-
- if (offset >= capacity)
- return 0;
- size_t const total_to_process = std::min(size, capacity - offset);
-
- kstd::vector<std::byte> scratch_buffer{block_size};
- auto processed = 0uz;
-
- while (processed < total_to_process)
- {
- size_t const absolute_offset = offset + processed;
- size_t const block_index = absolute_offset / block_size;
- size_t const in_block_offset = absolute_offset % block_size;
- size_t const chunk_size = std::min(total_to_process - processed, block_size - in_block_offset);
-
- op(block_index, in_block_offset, chunk_size, processed, block_dev, scratch_buffer.data(), buffer);
-
- processed += chunk_size;
- }
-
- return processed;
- }
-
- auto device_file::device() const -> kstd::shared_ptr<devices::device> const &
- {
- auto inode = static_cast<device_inode *>(m_inode.get());
- return inode->device();
- }
-} // namespace filesystem
diff --git a/kernel/src/filesystem/device_inode.cpp b/kernel/src/filesystem/device_inode.cpp
index b9ccd6d..812b43a 100644
--- a/kernel/src/filesystem/device_inode.cpp
+++ b/kernel/src/filesystem/device_inode.cpp
@@ -2,12 +2,16 @@
#include "kapi/system.hpp"
+#include "kernel/devices/block_device.hpp"
#include "kernel/devices/device.hpp"
-#include "kernel/filesystem/device_file.hpp"
-#include "kernel/filesystem/file.hpp"
#include "kernel/filesystem/inode.hpp"
+#include <kstd/cstring>
#include <kstd/memory>
+#include <kstd/vector>
+
+#include <algorithm>
+#include <cstddef>
namespace filesystem
{
@@ -21,13 +25,97 @@ namespace filesystem
}
}
- auto device_inode::open_file() -> kstd::shared_ptr<file>
+ auto device_inode::read(void * buffer, size_t offset, size_t size) const -> size_t
{
- return kstd::make_shared<device_file>(shared_from_this());
+ if (m_device->is_block_device())
+ {
+ return process_blocks(offset, size, buffer,
+ [](size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
+ std::byte * scratch, void * buffer) {
+ auto * out = static_cast<std::byte *>(buffer);
+ if (off == 0 && len == device->block_size())
+ {
+ device->read_block(idx, out + done);
+ }
+ else
+ {
+ device->read_block(idx, scratch);
+ kstd::libc::memcpy(out + done, scratch + off, len);
+ }
+ });
+ }
+ else
+ {
+ kapi::system::panic("[FILESYSTEM] device_file::read called on non-block device.");
+ }
}
- auto device_inode::device() const -> kstd::shared_ptr<devices::device> const &
+ auto device_inode::write(void const * buffer, size_t offset, size_t size) -> size_t
{
- return m_device;
+ if (m_device->is_block_device())
+ {
+ return process_blocks(offset, size, const_cast<void *>(buffer),
+ [](size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
+ std::byte * scratch, void * buffer) {
+ auto const * in = static_cast<std::byte const *>(buffer);
+ if (off == 0 && len == device->block_size())
+ {
+ device->write_block(idx, in + done);
+ }
+ else
+ {
+ device->read_block(idx, scratch);
+ kstd::libc::memcpy(scratch + off, in + done, len);
+ device->write_block(idx, scratch);
+ }
+ });
+ }
+ else
+ {
+ kapi::system::panic("[FILESYSTEM] device_file::write called on non-block device.");
+ }
+ }
+
+ auto device_inode::process_blocks(size_t offset, size_t size, void * buffer, block_op op) const -> size_t
+ {
+ if (buffer == nullptr)
+ {
+ kapi::system::panic("[FILESYSTEM] device_file::process_blocks called with null buffer.");
+ }
+
+ if (size == 0)
+ {
+ return 0;
+ }
+
+ auto * block_dev = static_cast<devices::block_device *>(m_device.get());
+ if (block_dev == nullptr)
+ {
+ kapi::system::panic("[FILESYSTEM] device_file: expected block_device.");
+ }
+
+ size_t const block_size = block_dev->block_size();
+ size_t const capacity = block_dev->capacity();
+
+ if (offset >= capacity)
+ return 0;
+ size_t const total_to_process = std::min(size, capacity - offset);
+
+ kstd::vector<std::byte> scratch_buffer{block_size};
+ auto processed = 0uz;
+
+ while (processed < total_to_process)
+ {
+ size_t const absolute_offset = offset + processed;
+ size_t const block_index = absolute_offset / block_size;
+ size_t const in_block_offset = absolute_offset % block_size;
+ size_t const chunk_size = std::min(total_to_process - processed, block_size - in_block_offset);
+
+ op(block_index, in_block_offset, chunk_size, processed, block_dev, scratch_buffer.data(), buffer);
+
+ processed += chunk_size;
+ }
+
+ return processed;
}
} // namespace filesystem \ No newline at end of file
diff --git a/kernel/src/filesystem/ext2/ext2_inode.cpp b/kernel/src/filesystem/ext2/ext2_inode.cpp
index 0760cb1..3cc0fb2 100644
--- a/kernel/src/filesystem/ext2/ext2_inode.cpp
+++ b/kernel/src/filesystem/ext2/ext2_inode.cpp
@@ -1,10 +1,8 @@
#include "kernel/filesystem/ext2/ext2_inode.hpp"
-#include "kernel/filesystem/file.hpp"
#include "kernel/filesystem/inode.hpp"
-#include "kernel/filesystem/inode_file.hpp"
-#include <kstd/memory>
+#include <cstddef>
namespace filesystem::ext2
{
@@ -12,8 +10,15 @@ namespace filesystem::ext2
: inode(inode_kind::regular)
{}
- auto ext2_inode::open_file() -> kstd::shared_ptr<filesystem::file>
+ auto ext2_inode::read(void * /*buffer*/, size_t /*offset*/, size_t /*size*/) const -> size_t
{
- return kstd::make_shared<inode_file>(shared_from_this());
+ // TODO BA-FS26 implement
+ return 0;
+ }
+
+ auto ext2_inode::write(void const * /*buffer*/, size_t /*offset*/, size_t /*size*/) -> size_t
+ {
+ // TODO BA-FS26 implement
+ return 0;
}
} // namespace filesystem::ext2 \ No newline at end of file
diff --git a/kernel/src/filesystem/file.cpp b/kernel/src/filesystem/file.cpp
deleted file mode 100644
index a147863..0000000
--- a/kernel/src/filesystem/file.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "kernel/filesystem/file.hpp"
-
-#include "kapi/system.hpp"
-
-#include "kernel/filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-namespace filesystem
-{
-
- file::file(kstd::shared_ptr<inode> const & inode)
- : m_inode(inode)
- {
- if (!m_inode)
- {
- kapi::system::panic("[FILESYSTEM] file constructed with null inode.");
- }
- }
-} // namespace filesystem \ No newline at end of file
diff --git a/kernel/src/filesystem/inode_file.cpp b/kernel/src/filesystem/inode_file.cpp
deleted file mode 100644
index 8b2fcba..0000000
--- a/kernel/src/filesystem/inode_file.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#include "kernel/filesystem/inode_file.hpp"
-
-#include "kapi/system.hpp"
-
-#include "kernel/filesystem/file.hpp"
-#include "kernel/filesystem/inode.hpp"
-
-#include <kstd/memory>
-
-#include <cstddef>
-
-namespace filesystem
-{
- inode_file::inode_file(kstd::shared_ptr<inode> const & inode)
- : file(inode)
- {
- if (m_inode->is_device())
- {
- kapi::system::panic("[FILESYSTEM] inode_file constructed with device inode.");
- }
- }
-
- auto inode_file::read(void * /*buffer*/, size_t /*offset*/, size_t /*size*/) const -> size_t
- {
- // TODO BA-FS26
- return 0;
- }
-
- auto inode_file::write(void const * /*buffer*/, size_t /*offset*/, size_t /*size*/) -> size_t
- {
- // TODO BA-FS26
- return 0;
- }
-} // namespace filesystem \ No newline at end of file
diff --git a/kernel/src/filesystem/open_file_description.cpp b/kernel/src/filesystem/open_file_description.cpp
index ff4d678..93c38ac 100644
--- a/kernel/src/filesystem/open_file_description.cpp
+++ b/kernel/src/filesystem/open_file_description.cpp
@@ -1,6 +1,6 @@
#include "kernel/filesystem/open_file_description.hpp"
-#include "kernel/filesystem/file.hpp"
+#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
#include <kstd/os/error.hpp>
@@ -9,26 +9,26 @@
namespace filesystem
{
- open_file_description::open_file_description(kstd::shared_ptr<file> const & file)
- : m_file(file)
+ open_file_description::open_file_description(kstd::shared_ptr<inode> const & inode)
+ : m_inode(inode)
, m_offset(0)
{
- if (!file)
+ if (!inode)
{
- kstd::os::panic("[FILESYSTEM] open_file_description constructed with null file.");
+ kstd::os::panic("[FILESYSTEM] open_file_description constructed with null inode.");
}
}
auto open_file_description::read(void * buffer, size_t size) -> size_t
{
- auto read_bytes = m_file->read(buffer, m_offset, size);
+ 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 written_bytes = m_file->write(buffer, m_offset, size);
+ auto written_bytes = m_inode->write(buffer, m_offset, size);
m_offset += written_bytes;
return written_bytes;
}
diff --git a/kernel/src/filesystem/vfs.cpp b/kernel/src/filesystem/vfs.cpp
index 2316de0..86991ea 100644
--- a/kernel/src/filesystem/vfs.cpp
+++ b/kernel/src/filesystem/vfs.cpp
@@ -68,11 +68,9 @@ namespace filesystem
{
if (auto custody = resolve_path(path))
{
- auto node = custody->get_inode();
-
- if (auto opened_file = node->open_file())
+ if (auto node = custody->get_inode())
{
- return kstd::make_shared<open_file_description>(opened_file);
+ return kstd::make_shared<open_file_description>(node);
}
kapi::system::panic("[FILESYSTEM] inode::open_file returned null file.");
diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp
index 8d7308b..eb699bd 100644
--- a/kernel/src/main.cpp
+++ b/kernel/src/main.cpp
@@ -4,7 +4,6 @@
#include "kapi/system.hpp"
#include "kernel/devices/storage/storage_management.hpp"
-#include "kernel/filesystem/device_file.hpp"
#include "kernel/filesystem/device_inode.hpp"
#include "kernel/filesystem/file_descriptor_table.hpp"
#include "kernel/filesystem/open_file_description.hpp"
@@ -28,8 +27,7 @@ auto test_file_description_manually() -> void
auto dev_node = kstd::make_shared<filesystem::device_inode>(device);
- auto dev_file = kstd::make_shared<filesystem::device_file>(dev_node);
- auto ofd = kstd::make_shared<filesystem::open_file_description>(dev_file);
+ auto ofd = kstd::make_shared<filesystem::open_file_description>(dev_node);
auto fd_index = fd_table.add_file(ofd);
// use: read two bytes and write two again
@@ -64,7 +62,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<filesystem::open_file_description>(dev_file);
+ auto ofd1 = kstd::make_shared<filesystem::open_file_description>(dev_node);
fd_index = fd_table.add_file(ofd1);
auto fd1 = fd_table.get_file(fd_index);
@@ -91,6 +89,9 @@ auto test_file_description_manually() -> void
auto test_device_with_vfs() -> void
{
// TODO BA-FS26
+
+ auto vfs = filesystem::vfs::get();
+ vfs.open("/");
}
auto run_test_code() -> void