DiskDevice.cpp 946 B

123456789101112131415161718192021222324252627282930
  1. #include <Kernel/Devices/DiskDevice.h>
  2. DiskDevice::DiskDevice(int major, int minor, size_t block_size)
  3. : BlockDevice(major, minor, block_size)
  4. {
  5. }
  6. DiskDevice::~DiskDevice()
  7. {
  8. }
  9. bool DiskDevice::read(DiskOffset offset, unsigned length, u8* out) const
  10. {
  11. ASSERT((offset % block_size()) == 0);
  12. ASSERT((length % block_size()) == 0);
  13. u32 first_block = offset / block_size();
  14. u32 end_block = (offset + length) / block_size();
  15. return const_cast<DiskDevice*>(this)->read_blocks(first_block, end_block - first_block, out);
  16. }
  17. bool DiskDevice::write(DiskOffset offset, unsigned length, const u8* in)
  18. {
  19. ASSERT((offset % block_size()) == 0);
  20. ASSERT((length % block_size()) == 0);
  21. u32 first_block = offset / block_size();
  22. u32 end_block = (offset + length) / block_size();
  23. ASSERT(first_block <= 0xffffffff);
  24. ASSERT(end_block <= 0xffffffff);
  25. return write_blocks(first_block, end_block - first_block, in);
  26. }