#include #include #include #include #include namespace kernel::filesystem { open_file_descriptor::open_file_descriptor(kstd::shared_ptr const & dentry) : m_dentry(dentry) , m_offset(0) { if (!dentry) { 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_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_dentry->get_inode()->write(buffer, m_offset, size); m_offset += written_bytes; return written_bytes; } auto open_file_descriptor::offset() const -> size_t { return m_offset; } } // namespace kernel::filesystem