Chameleon

Chameleon Svn Source Tree

Root/branches/rewrite/i386/include/IOKit/storage/IOBDBlockStorageDriver.h

Source at commit 1129 created 12 years 11 months ago.
By meklort, Change options.o so that it reloads the system config as well. Also change it so that it uses that config for variables (NOTE: if the calue exists in chameleonConfig, it's used instead.
1/*
2 * Copyright (c) 2006-2009 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24/*!
25 * @header IOBDBlockStorageDriver
26 * @abstract
27 * This header contains the IOBDBlockStorageDriver class definition.
28 * @discussion
29 * This class implements BD functionality, independent of
30 * the physical connection protocol (e.g. SCSI, ATA, USB).
31 *
32 * A protocol-specific provider implements the functionality using an appropriate
33 * protocol and commands.
34 */
35
36#ifndef_IOBDBLOCKSTORAGEDRIVER_H
37#define_IOBDBLOCKSTORAGEDRIVER_H
38
39#include <IOKit/storage/IOBDBlockStorageDevice.h>
40#include <IOKit/storage/IODVDBlockStorageDriver.h>
41
42/*!
43 * @defined kIOBDBlockStorageDriverClass
44 * @abstract
45 * kIOBDBlockStorageDriverClass is the name of the IOBDBlockStorageDriver class.
46 * @discussion
47 * kIOBDBlockStorageDriverClass is the name of the IOBDBlockStorageDriver class.
48 */
49
50#define kIOBDBlockStorageDriverClass "IOBDBlockStorageDriver"
51
52/*!
53 * @class
54 * IOBDBlockStorageDriver
55 * @abstract
56 * Generic BD Driver.
57 * @discussion
58 * Storage drivers are split into two parts: the Generic Driver handles
59 * all generic device issues, independent of the lower-level transport
60 * mechanism (e.g. SCSI, ATA, USB, FireWire). All storage operations
61 * at the Generic Driver level are translated into a series of generic
62 * device operations. These operations are passed via the Device Nub
63 * to a Transport Driver, which implements the appropriate
64 * transport-dependent protocol to execute these operations.
65 *
66 * To determine the write-protect state of a device (or media), for
67 * example, the generic driver would issue a call to the
68 * Transport Driver's reportWriteProtection method. If this were a SCSI
69 * device, its Transport Driver would issue a Mode Sense command to
70 * extract the write-protection status bit. The Transport Driver then
71 * reports true or false to the generic driver.
72 *
73 * The generic driver therefore has no knowledge of, or involvement
74 * with, the actual commands and mechanisms used to communicate with
75 * the device. It is expected that the generic driver will rarely, if
76 * ever, need to be subclassed to handle device idiosyncrasies; rather,
77 * the Transport Driver should be changed via overrides.
78 *
79 * A generic driver could be subclassed to create a different type of
80 * generic device. The generic driver IOBDBlockStorageDriver class is a subclass
81 * of IODVDBlockStorageDriver, adding BD functions. Similarly, the Transport Driver
82 * IOBDBlockStorageDevice is a subclass of IODVDBlockStorageDevice, adding BD
83 * functions.
84*/
85
86class IOBDBlockStorageDriver : public IODVDBlockStorageDriver
87{
88 OSDeclareDefaultStructors(IOBDBlockStorageDriver)
89
90protected:
91
92 struct ExpansionData { /* */ };
93 ExpansionData * _expansionData;
94
95 /* Overrides of IODVDBlockStorageDriver. */
96
97 virtual IOReturn acceptNewMedia(void);
98
99 /* End of IODVDBlockStorageDriver overrides. */
100
101public:
102
103 /*
104 * Obtain this object's provider. We override the superclass's method to
105 * return a more specific subclass of IOService -- IOBDBlockStorageDevice.
106 * This method serves simply as a convenience to subclass developers.
107 */
108
109 virtual IOBDBlockStorageDevice * getProvider() const;
110
111 /* Overrides of IODVDBlockStorageDriver: */
112
113 virtual const char * getDeviceTypeName(void);
114 virtual IOMedia * instantiateDesiredMediaObject(void);
115 virtual IOMedia * instantiateMediaObject(UInt64 base,UInt64 byteSize,
116 UInt32 blockSize,char *mediaName);
117 virtual IOReturn readStructure(IOMemoryDescriptor *buffer,const DVDStructureFormat format,
118 const UInt32 address,const UInt8 layer,const UInt8 agid);
119
120 /* End of IODVDBlockStorageDriver overrides. */
121
122 /*!
123 * @function splitTrack
124 * @discussion
125 * Issue an MMC RESERVE TRACK command with the ARSV bit.
126 * @param address
127 * As documented by MMC.
128 * @result
129 * Returns the status of the operation.
130 */
131
132 virtual IOReturn splitTrack(UInt32 address);
133
134 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 0);
135 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 1);
136 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 2);
137 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 3);
138 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 4);
139 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 5);
140 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 6);
141 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 7);
142 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 8);
143 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 9);
144 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 10);
145 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 11);
146 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 12);
147 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 13);
148 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 14);
149 OSMetaClassDeclareReservedUnused(IOBDBlockStorageDriver, 15);
150};
151
152#endif /* !_IOBDBLOCKSTORAGEDRIVER_H */
153

Archive Download this file

Revision: 1129