diff options
Diffstat (limited to 'kernel/src/filesystem/open_file_descriptor.cpp')
| -rw-r--r-- | kernel/src/filesystem/open_file_descriptor.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/kernel/src/filesystem/open_file_descriptor.cpp b/kernel/src/filesystem/open_file_descriptor.cpp index 25bffbd..ebaabef 100644 --- a/kernel/src/filesystem/open_file_descriptor.cpp +++ b/kernel/src/filesystem/open_file_descriptor.cpp @@ -1,6 +1,7 @@ -#include <kernel/filesystem/inode.hpp> #include <kernel/filesystem/open_file_descriptor.hpp> +#include <kernel/filesystem/dentry.hpp> + #include <kstd/memory> #include <kstd/os/error.hpp> @@ -8,33 +9,38 @@ namespace kernel::filesystem { - open_file_descriptor::open_file_descriptor(kstd::shared_ptr<inode> const & inode) - : m_inode(inode) + open_file_descriptor::open_file_descriptor(kstd::shared_ptr<dentry> const & dentry) + : m_dentry(dentry) , m_offset(0) { - if (!inode) + if (!dentry) { - kstd::os::panic("[FILESYSTEM] open_file_descriptor constructed with null inode."); + kstd::os::panic("[FILESYSTEM] open_file_descriptor constructed with null dentry."); } } auto open_file_descriptor::read(void * buffer, size_t size) -> size_t { - auto read_bytes = m_inode->read(buffer, m_offset, size); + auto read_bytes = m_dentry->get_inode()->read(buffer, m_offset, size); m_offset += read_bytes; return read_bytes; } auto open_file_descriptor::write(void const * buffer, size_t size) -> size_t { - auto written_bytes = m_inode->write(buffer, m_offset, size); + auto written_bytes = m_dentry->get_inode()->write(buffer, m_offset, size); m_offset += written_bytes; return written_bytes; } - auto open_file_descriptor::offset() const -> size_t + auto open_file_descriptor::get_offset() const -> size_t { return m_offset; } + auto open_file_descriptor::get_dentry() const -> kstd::shared_ptr<dentry> const & + { + return m_dentry; + } + } // namespace kernel::filesystem
\ No newline at end of file |
