The Pedigree Project
0.1
|
#include <Partition.h>
Public Member Functions | |
Partition (String type, uint64_t start, uint64_t length) | |
virtual void | getName (String &str) |
virtual void | dump (String &str) |
virtual uintptr_t | read (uint64_t location) |
virtual void | write (uint64_t location) |
virtual size_t | getSize () const |
Gets the size of the disk. More... | |
virtual size_t | getBlockSize () const |
Gets the block size of the disk. More... | |
uint64_t | getStart () |
uint64_t | getLength () const |
String | getPartitionType () |
Public Member Functions inherited from Disk | |
Disk (Device *p) | |
virtual Type | getType () |
virtual SubType | getSubType () |
virtual void | align (uint64_t location) |
Sets the page boundary alignment after a specific location on the disk. More... | |
virtual void | pin (uint64_t location) |
Pins a cache page. More... | |
virtual void | unpin (uint64_t location) |
virtual bool | cacheIsCritical () |
Whether or not the cache is critical and cannot be flushed or deleted. More... | |
virtual void | flush (uint64_t location) |
Flush a cached page to disk. More... | |
Public Member Functions inherited from Device | |
Device (Device *p) | |
Device * | getParent () const |
void | setParent (Device *p) |
virtual String | getSpecificType () |
virtual void | setSpecificType (String str) |
void | setPciPosition (uint32_t bus, uint32_t device, uint32_t func) |
void | setPciIdentifiers (uint8_t classCode, uint8_t subclassCode, uint16_t vendorId, uint16_t deviceId, uint8_t progIf) |
void | setPciConfigHeader (const PciBus::ConfigSpace &space) |
PciBus::ConfigSpace | getPciConfigHeader () const |
uint8_t | getPciClassCode () |
uint8_t | getPciSubclassCode () |
uint16_t | getPciVendorId () |
uint16_t | getPciDeviceId () |
uint8_t | getPciProgInterface () |
uint32_t | getPciBusPosition () |
uint32_t | getPciDevicePosition () |
uint32_t | getPciFunctionNumber () |
virtual Vector< Address * > & | addresses () |
virtual uintptr_t | getInterruptNumber () |
virtual void | setInterruptNumber (uintptr_t n) |
void | addChild (Device *pDevice) |
Device * | getChild (size_t n) |
size_t | getNumChildren () |
void | removeChild (size_t n) |
void | removeChild (Device *d) |
void | replaceChild (Device *src, Device *dest) |
Private Attributes | |
String | m_Type |
uint64_t | m_Start |
uint64_t | m_Length |
bool | m_bAligned |
Additional Inherited Members | |
Public Types inherited from Disk | |
enum | SubType { ATA = 0, ATAPI } |
Public Types inherited from Device | |
enum | Type { Generic, Root, Disk, Bus, Display, Network, Sound, Console, Mouse, Controller, UsbController, UsbGeneric, UsbContainer } |
typedef Device *(* | Callback) (Device *) |
Static Public Member Functions inherited from Device | |
static void | foreach (Callback callback, Device *root=0) |
template<class F , class... Args> | |
static void | foreach (pedigree_std::Callable< F > &callback, Device *root, Args...args) |
static void | addToRoot (Device *device) |
static void | searchByVendorId (uint16_t vendorId, void(*callback)(Device *), Device *root=0) |
static void | searchByVendorIdAndDeviceId (uint16_t vendorId, uint16_t deviceId, void(*callback)(Device *), Device *root=0) |
static void | searchByClass (uint16_t classCode, void(*callback)(Device *), Device *root=0) |
static void | searchByClassAndSubclass (uint16_t classCode, uint16_t subclassCode, void(*callback)(Device *), Device *root=0) |
static void | searchByClassSubclassAndProgInterface (uint16_t classCode, uint16_t subclassCode, uint8_t progInterface, void(*callback)(Device *), Device *root=0) |
Protected Member Functions inherited from Device | |
NOT_COPYABLE_OR_ASSIGNABLE (Device) | |
Static Protected Member Functions inherited from Device | |
static Device & | root () |
Protected Attributes inherited from Device | |
Vector< Address * > | m_Addresses |
Vector< Device * > | m_Children |
Device * | m_pParent |
uintptr_t | m_InterruptNumber |
String | m_SpecificType |
PciBus::ConfigSpace | m_ConfigHeader |
uint8_t | m_ClassCode |
uint8_t | m_SubclassCode |
uint16_t | m_VendorId |
uint16_t | m_DeviceId |
uint8_t | m_ProgInterface |
uint32_t | m_PciBusPos |
uint32_t | m_PciDevicePos |
uint32_t | m_PciFunctionNum |
Static Protected Attributes inherited from Device | |
static Device | m_Root |
static Mutex | m_TreeLock |
A partition is a chunk of disk.
Definition at line 31 of file Partition.h.
|
inlinevirtual |
Dumps a textual representation of the device into the given string.
Reimplemented from Disk.
Definition at line 45 of file Partition.h.
|
inlinevirtual |
Gets the block size of the disk.
This is the native block size with which all reads and writes are performed, regardless of how much data is available to be read/written.
Reimplemented from Disk.
Definition at line 103 of file Partition.h.
References Disk::getBlockSize(), Device::getParent(), and getStart().
|
inline |
Returns the length of this partition.
Definition at line 113 of file Partition.h.
Referenced by getSize().
|
inlinevirtual |
Stores the device's name in str.
Reimplemented from Disk.
Definition at line 37 of file Partition.h.
|
inline |
Returns a string giving the type of the partition.
Definition at line 119 of file Partition.h.
|
inlinevirtual |
Gets the size of the disk.
This is the size in bytes of the disk. Reads or writes beyond this size will fail.
Reimplemented from Disk.
Definition at line 98 of file Partition.h.
References getLength().
uint64_t Partition::getStart | ( | ) |
Returns the first byte of the parent disk that is in this partition.
Definition at line 32 of file Partition.cc.
Referenced by getBlockSize().
|
inlinevirtual |
Read from location
on disk and return a pointer to it. location
must be 512 byte aligned. The pointer returned is within a page of cache that maps to 4096 bytes of disk area.
location | The offset from the start of the device, in bytes, to start the read, must be multiple of 512. |
write()
or flush()
). Reimplemented from Disk.
Definition at line 56 of file Partition.h.
References Disk::align(), Device::getParent(), and Disk::read().
|
inlinevirtual |
This function schedules a cache writeback of the given location. The data to be written back is fetched from the cache (pointer returned by read()
).
location | The offset from the start of the device, in bytes, to start the write. Must be 512byte aligned. |
Reimplemented from Disk.
Definition at line 77 of file Partition.h.
References Disk::align(), Device::getParent(), and Disk::write().