#ifndef _APPLERAID_H
#define _APPLERAID_H
#ifdef KERNEL
#ifdef DEBUG
#define IOASSERT 1
#define IOLog1 IOLog
#endif DEBUG
#ifndef IOLog1
#define IOLog1(args...)
#endif
#ifndef IOLog2
#define IOLog2(args...)
#endif
#ifndef IOLogOC
#define IOLogOC(args...)
#endif
#ifndef IOLogRW
#define IOLogRW(args...)
#endif
#ifndef IOLogUC
#define IOLogUC(args...)
#endif
#include <IOKit/IOTypes.h>
#include <IOKit/IOService.h>
#include <IOKit/IOWorkLoop.h>
#include <IOKit/IOEventSource.h>
#include <IOKit/IOTimerEventSource.h>
#include <IOKit/IOCommand.h>
#include <IOKit/IOCommandPool.h>
#include <IOKit/IOCommandGate.h>
#include <IOKit/IOBufferMemoryDescriptor.h>
#include <IOKit/IOMessage.h>
#include <IOKit/IOKitKeys.h>
#include <IOKit/IOUserClient.h>
#include <IOKit/IOBSD.h>
#include <IOKit/storage/IOMedia.h>
class AppleRAID;
class AppleRAIDSet;
class AppleRAIDEventSource;
class AppleRAIDStorageRequest;
#include "AppleRAIDGlobals.h"
#include "AppleRAIDMember.h"
#include "AppleRAIDMemoryDescriptor.h"
#include "AppleRAIDStorageRequest.h"
#include "AppleRAIDEventSource.h"
#include "AppleRAIDSet.h"
#include "AppleRAIDConcatSet.h"
#include "AppleRAIDMirrorSet.h"
#include "AppleRAIDStripeSet.h"
#include "AppleRAIDUserClient.h"
#include "AppleRAIDUserLib.h"
class AppleRAID : public IOService
{
OSDeclareDefaultStructors(AppleRAID);
private:
OSDictionary * raidSets;
OSDictionary * raidMembers;
void addSet(AppleRAIDSet * set);
void removeSet(AppleRAIDSet * set);
void addMember(AppleRAIDMember * member);
void removeMember(AppleRAIDMember * member);
AppleRAIDMember * findMember(const OSString * name);
void startSet(AppleRAIDSet * set);
public:
bool init(void);
void free(void);
AppleRAIDSet * findSet(const OSString * uuid);
AppleRAIDSet * findSet(AppleRAIDMember * member);
IOReturn newMember(IORegistryEntry * child);
IOReturn oldMember(IORegistryEntry * child);
void recoverMember(IORegistryEntry * child);
void degradeSet(AppleRAIDSet * set);
void restartSet(AppleRAIDSet * set, bool bump);
IOReturn updateSet(char * setBuffer, char * retBuffer, IOByteCount setBufferSize, IOByteCount * retBufferSize);
IOReturn getListOfSets(UInt32 inFlags, char * outList, IOByteCount * outListSize);
IOReturn getSetProperties(char * setString, char * outProp, IOByteCount setStringSize, IOByteCount * outPropSize);
IOReturn getMemberProperties(char * memberString, char * outProp, IOByteCount memberStringSize, IOByteCount * outPropSize);
};
#endif
#endif