AppleRAIDStripeSet.h [plain text]
#ifndef _APPLERAIDSTRIPESET_H
#define _APPLERAIDSTRIPESET_H
#define kAppleRAIDLevelNameStripe "Stripe"
#ifdef KERNEL
class AppleRAIDStripeSet : public AppleRAIDSet
{
OSDeclareDefaultStructors(AppleRAIDStripeSet);
protected:
virtual bool init();
virtual void free();
public:
static AppleRAIDSet * createRAIDSet(AppleRAIDMember * firstMember);
virtual bool addSpare(AppleRAIDMember * member);
virtual bool addMember(AppleRAIDMember * member);
virtual bool startSet(void);
virtual AppleRAIDMemoryDescriptor * allocateMemoryDescriptor(AppleRAIDStorageRequest *storageRequest, UInt32 memberIndex);
};
class AppleRAIDStripeMemoryDescriptor : public AppleRAIDMemoryDescriptor
{
OSDeclareDefaultStructors(AppleRAIDStripeMemoryDescriptor);
private:
UInt32 mdMemberCount;
UInt32 mdSetBlockSize;
UInt32 mdSetBlockStart;
UInt32 mdSetBlockOffset;
protected:
virtual bool initWithStorageRequest(AppleRAIDStorageRequest *storageRequest, UInt32 memberIndex);
virtual bool configureForMemoryDescriptor(IOMemoryDescriptor *memoryDescriptor, UInt64 byteStart, UInt32 activeIndex);
public:
static AppleRAIDMemoryDescriptor *withStorageRequest(AppleRAIDStorageRequest *storageRequest, UInt32 memberIndex);
virtual IOPhysicalAddress getPhysicalSegment(IOByteCount offset, IOByteCount *length);
virtual addr64_t getPhysicalSegment64(IOByteCount offset, IOByteCount *length);
};
#endif KERNEL
#endif