1/* 2 * Copyright (c) 2001-2007 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * The contents of this file constitute Original Code as defined in and 7 * are subject to the Apple Public Source License Version 1.1 (the 8 * "License"). You may not use this file except in compliance with the 9 * License. Please obtain a copy of the License at 10 * http://www.apple.com/publicsource and read it before using this file. 11 * 12 * This Original Code and all software distributed under the License are 13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the 17 * License for the specific language governing rights and limitations 18 * under the License. 19 * 20 * @APPLE_LICENSE_HEADER_END@ 21 */ 22 23#ifndef _APPLERAIDSTORAGEREQUEST_H 24#define _APPLERAIDSTORAGEREQUEST_H 25 26#define kAppleRAIDStorageRequestCount (16) 27 28class AppleRAIDStorageRequest : public IOCommand 29{ 30 OSDeclareDefaultStructors(AppleRAIDStorageRequest); 31 32 friend class AppleRAIDSet; // XXX remove this 33 friend class AppleRAIDMirrorSet; // XXX remove this 34 friend class AppleLVMGroup; // XXX remove this 35 friend class AppleRAIDEventSource; // XXX remove this 36 friend class AppleRAIDStripeMemoryDescriptor; // XXX remove this 37 friend class AppleRAIDMirrorMemoryDescriptor; // XXX remove this 38 friend class AppleRAIDConcatMemoryDescriptor; // XXX remove this 39 friend class AppleLVMMemoryDescriptor; // XXX remove this 40 41protected: 42 AppleRAIDSet *srRAIDSet; 43 AppleRAIDEventSource *srEventSource; 44 AppleRAIDMemoryDescriptor **srMemoryDescriptors; 45 IOReturn srStatus; 46 UInt64 srSetBlockSize; 47 UInt64 srMemberBaseOffset; 48 UInt32 srActiveCount; 49 UInt32 srMemberCount; 50 UInt32 srRequestCount; 51 UInt32 srRequestsAllocated; 52 IOReturn *srRequestStatus; 53 UInt64 *srRequestByteCounts; 54 UInt32 srCompletedCount; 55 UInt64 srByteStart; 56 UInt64 srByteCount; 57 AppleRAIDMember **srActiveMembers; 58 IOService *srClient; 59 IOStorageCompletion srClientsCompletion; 60 IOMemoryDescriptor *srMemoryDescriptor; 61 IODirection srMemoryDescriptorDirection; 62 63 virtual void free(void); 64 65 virtual void read(IOService *client, UInt64 byteStart, IOMemoryDescriptor *buffer, 66 IOStorageAttributes *attributes, IOStorageCompletion *completion); 67 virtual void write(IOService *client, UInt64 byteStart, IOMemoryDescriptor *buffer, 68 IOStorageAttributes *attributes, IOStorageCompletion *completion); 69 70public: 71 static AppleRAIDStorageRequest *withAppleRAIDSet(AppleRAIDSet * set); 72 virtual bool initWithAppleRAIDSet(AppleRAIDSet * set); 73 virtual void extractRequest(IOService **client, UInt64 *byteStart, IOMemoryDescriptor **buffer, IOStorageCompletion *completion); 74}; 75 76#endif /* ! _APPLERAIDSTORAGEREQUEST_H */ 77