xref: /haiku/src/add-ons/kernel/file_systems/udf/PhysicalPartition.cpp (revision ed24eb5ff12640d052171c6a7feba37fab8a75d1)
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