#include "kernel/filesystem/device_inode.hpp" #include "kapi/devices/device.hpp" #include "kapi/system.hpp" #include "kernel/devices/block_device_utils.hpp" #include "kernel/filesystem/inode.hpp" #include #include namespace kernel::filesystem { device_inode::device_inode(kstd::shared_ptr const & device) : inode(inode_kind::device) , m_device(device) { if (!device) { kapi::system::panic("[FILESYSTEM] device_inode constructed with null device."); } } auto device_inode::read(void * buffer, size_t offset, size_t size) const -> size_t { if (m_device->is_block_device()) { return devices::block_device_utils::read(m_device, buffer, offset, size); } else { kapi::system::panic("[FILESYSTEM] device_file::read called on non-block device."); } } auto device_inode::write(void const * buffer, size_t offset, size_t size) -> size_t { if (m_device->is_block_device()) { return devices::block_device_utils::write(m_device, buffer, offset, size); } else { kapi::system::panic("[FILESYSTEM] device_file::write called on non-block device."); } } auto device_inode::device() const -> kstd::shared_ptr const & { return m_device; } } // namespace kernel::filesystem