ladybird/Kernel/Devices/DiskDevice.cpp
Andreas Kling 5de483cfbb Kernel: Move DiskDevice::block_size() up to BlockDevice
All block devices should have a block size, after all. This defaults to
PAGE_SIZE if no size is specified.
2019-08-21 16:48:59 +02:00

31 lines
946 B
C++

#include <Kernel/Devices/DiskDevice.h>
DiskDevice::DiskDevice(int major, int minor, size_t block_size)
: BlockDevice(major, minor, block_size)
{
}
DiskDevice::~DiskDevice()
{
}
bool DiskDevice::read(DiskOffset offset, unsigned length, u8* out) const
{
ASSERT((offset % block_size()) == 0);
ASSERT((length % block_size()) == 0);
u32 first_block = offset / block_size();
u32 end_block = (offset + length) / block_size();
return const_cast<DiskDevice*>(this)->read_blocks(first_block, end_block - first_block, out);
}
bool DiskDevice::write(DiskOffset offset, unsigned length, const u8* in)
{
ASSERT((offset % block_size()) == 0);
ASSERT((length % block_size()) == 0);
u32 first_block = offset / block_size();
u32 end_block = (offset + length) / block_size();
ASSERT(first_block <= 0xffffffff);
ASSERT(end_block <= 0xffffffff);
return write_blocks(first_block, end_block - first_block, in);
}