1 #include "PhysicalPartition.h" 2 3 #define B_NOT_IMPLEMENTED B_ERROR 4 5 6 /*! \brief Creates a new PhysicalPartition object. 7 */ 8 PhysicalPartition::PhysicalPartition(uint16 number, uint32 start, uint32 length) 9 : 10 fNumber(number), 11 fStart(start), 12 fLength(length) 13 { 14 TRACE(("PhysicalPartition::PhysicalPartition: number = %d, start = %" 15 B_PRIu32 ",length = %" B_PRIu32 "\n", number, start, length)); 16 } 17 18 19 /*! \brief Destroys the PhysicalPartition object. 20 */ 21 PhysicalPartition::~PhysicalPartition() 22 { 23 } 24 25 26 /*! \brief Maps the given logical block to a physical block on disc. 27 28 The given logical block is simply treated as an offset from the 29 start of the physical partition. 30 */ 31 status_t 32 PhysicalPartition::MapBlock(uint32 logicalBlock, off_t &physicalBlock) 33 { 34 TRACE(("PhysicalPartition::MapBlock: %" B_PRIu32 "\n", logicalBlock)); 35 if (logicalBlock >= fLength) { 36 TRACE_ERROR(("PhysicalPartition::MapBlock: block %" B_PRIu32 " invalid" 37 ",length = %" B_PRIu32 "\n", logicalBlock, fLength)); 38 return B_BAD_ADDRESS; 39 } else { 40 physicalBlock = fStart + logicalBlock; 41 TRACE(("PhysicalPartition::MapBlock: block %" B_PRIu32 " mapped to %" 42 B_PRIdOFF "\n", logicalBlock, physicalBlock)); 43 return B_OK; 44 } 45 } 46