DiskPartition.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <Kernel/Devices/DiskPartition.h>
  2. // #define OFFD_DEBUG
  3. NonnullRefPtr<DiskPartition> DiskPartition::create(DiskDevice& device, unsigned block_offset)
  4. {
  5. return adopt(*new DiskPartition(device, block_offset));
  6. }
  7. DiskPartition::DiskPartition(DiskDevice& device, unsigned block_offset)
  8. : DiskDevice(100, 0, device.block_size())
  9. , m_device(device)
  10. , m_block_offset(block_offset)
  11. {
  12. }
  13. DiskPartition::~DiskPartition()
  14. {
  15. }
  16. bool DiskPartition::read_block(unsigned index, u8* out) const
  17. {
  18. #ifdef OFFD_DEBUG
  19. kprintf("DiskPartition::read_block %u (really: %u)\n", index, m_block_offset + index);
  20. #endif
  21. return m_device->read_block(m_block_offset + index, out);
  22. }
  23. bool DiskPartition::write_block(unsigned index, const u8* data)
  24. {
  25. #ifdef OFFD_DEBUG
  26. kprintf("DiskPartition::write_block %u (really: %u)\n", index, m_block_offset + index);
  27. #endif
  28. return m_device->write_block(m_block_offset + index, data);
  29. }
  30. bool DiskPartition::read_blocks(unsigned index, u16 count, u8* out)
  31. {
  32. #ifdef OFFD_DEBUG
  33. kprintf("DiskPartition::read_blocks %u (really: %u) count=%u\n", index, m_block_offset + index, count);
  34. #endif
  35. return m_device->read_blocks(m_block_offset + index, count, out);
  36. }
  37. bool DiskPartition::write_blocks(unsigned index, u16 count, const u8* data)
  38. {
  39. #ifdef OFFD_DEBUG
  40. kprintf("DiskPartition::write_blocks %u (really: %u) count=%u\n", index, m_block_offset + index, count);
  41. #endif
  42. return m_device->write_blocks(m_block_offset + index, count, data);
  43. }
  44. const char* DiskPartition::class_name() const
  45. {
  46. return "DiskPartition";
  47. }