Root/
Source at commit 2350 created 10 years 5 months ago. By ifabio, remove duplicated define. | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 1998-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 IOCDPartitionScheme␊ |
26 | * @abstract␊ |
27 | * This header contains the IOCDPartitionScheme class definition.␊ |
28 | */␊ |
29 | ␊ |
30 | #ifndef _IOCDPARTITIONSCHEME_H␊ |
31 | #define _IOCDPARTITIONSCHEME_H␊ |
32 | ␊ |
33 | #include <IOKit/storage/IOCDTypes.h>␊ |
34 | ␊ |
35 | /*!␊ |
36 | * @defined kIOCDPartitionSchemeClass␊ |
37 | * @abstract␊ |
38 | * kIOCDPartitionSchemeClass is the name of the IOCDPartitionScheme class.␊ |
39 | * @discussion␊ |
40 | * kIOCDPartitionSchemeClass is the name of the IOCDPartitionScheme class.␊ |
41 | */␊ |
42 | ␊ |
43 | #define kIOCDPartitionSchemeClass "IOCDPartitionScheme"␊ |
44 | ␊ |
45 | /*!␊ |
46 | * @defined kIOMediaSessionIDKey␊ |
47 | * @abstract␊ |
48 | * kIOMediaSessionIDKey is property of IOMedia objects. It has an OSNumber␊ |
49 | * value.␊ |
50 | * @discussion␊ |
51 | * The kIOMediaSessionIDKey property is placed into each IOMedia instance␊ |
52 | * created by the CD partition scheme. It identifies the session number␊ |
53 | * the track was recorded on.␊ |
54 | */␊ |
55 | ␊ |
56 | #define kIOMediaSessionIDKey "Session ID"␊ |
57 | ␊ |
58 | #ifdef KERNEL␊ |
59 | #ifdef __cplusplus␊ |
60 | ␊ |
61 | /*␊ |
62 | * Kernel␊ |
63 | */␊ |
64 | ␊ |
65 | #include <IOKit/storage/IOCDMedia.h>␊ |
66 | #include <IOKit/storage/IOPartitionScheme.h>␊ |
67 | ␊ |
68 | /*␊ |
69 | * Class␊ |
70 | */␊ |
71 | ␊ |
72 | class IOCDPartitionScheme : public IOPartitionScheme␊ |
73 | {␊ |
74 | OSDeclareDefaultStructors(IOCDPartitionScheme);␊ |
75 | ␊ |
76 | protected:␊ |
77 | ␊ |
78 | struct ExpansionData { /* */ };␊ |
79 | ExpansionData * _expansionData;␊ |
80 | ␊ |
81 | OSSet * _partitions; /* (set of media objects representing partitions) */␊ |
82 | ␊ |
83 | /*␊ |
84 | * Free all of this object's outstanding resources.␊ |
85 | */␊ |
86 | ␊ |
87 | virtual void free(void);␊ |
88 | ␊ |
89 | /*␊ |
90 | * Scan the provider media for CD partitions (in TOC). Returns the set␊ |
91 | * of media objects representing each of the partitions (the retain for␊ |
92 | * the set is passed to the caller), or null should no CD partitions be␊ |
93 | * found. The default probe score can be adjusted up or down, based on␊ |
94 | * the confidence of the scan.␊ |
95 | */␊ |
96 | ␊ |
97 | virtual OSSet * scan(SInt32 * score);␊ |
98 | ␊ |
99 | /*␊ |
100 | * Ask whether the given partition appears to be corrupt. A partition that␊ |
101 | * is corrupt will cause the failure of the CD partition scheme altogether.␊ |
102 | */␊ |
103 | ␊ |
104 | virtual bool isPartitionCorrupt( CDTOCDescriptor * partition,␊ |
105 | UInt64 partitionSize,␊ |
106 | UInt32 partitionBlockSize,␊ |
107 | CDSectorType partitionBlockType,␊ |
108 | CDTOC * toc );␊ |
109 | ␊ |
110 | /*␊ |
111 | * Ask whether the given partition appears to be invalid. A partition that␊ |
112 | * is invalid will cause it to be skipped in the scan, but will not cause a␊ |
113 | * failure of the CD partition scheme.␊ |
114 | */␊ |
115 | ␊ |
116 | virtual bool isPartitionInvalid( CDTOCDescriptor * partition,␊ |
117 | UInt64 partitionSize,␊ |
118 | UInt32 partitionBlockSize,␊ |
119 | CDSectorType partitionBlockType,␊ |
120 | CDTOC * toc );␊ |
121 | ␊ |
122 | /*␊ |
123 | * Instantiate a new media object to represent the given partition.␊ |
124 | */␊ |
125 | ␊ |
126 | virtual IOMedia * instantiateMediaObject(␊ |
127 | CDTOCDescriptor * partition,␊ |
128 | UInt64 partitionSize,␊ |
129 | UInt32 partitionBlockSize,␊ |
130 | CDSectorType partitionBlockType,␊ |
131 | CDTOC * toc );␊ |
132 | ␊ |
133 | /*␊ |
134 | * Allocate a new media object (called from instantiateMediaObject).␊ |
135 | */␊ |
136 | ␊ |
137 | virtual IOMedia * instantiateDesiredMediaObject(␊ |
138 | CDTOCDescriptor * partition,␊ |
139 | UInt64 partitionSize,␊ |
140 | UInt32 partitionBlockSize,␊ |
141 | CDSectorType partitionBlockType,␊ |
142 | CDTOC * toc );␊ |
143 | ␊ |
144 | public:␊ |
145 | ␊ |
146 | /*␊ |
147 | * Initialize this object's minimal state.␊ |
148 | */␊ |
149 | ␊ |
150 | virtual bool init(OSDictionary * properties = 0);␊ |
151 | ␊ |
152 | /*␊ |
153 | * Scan the provider media for CD partitions.␊ |
154 | */␊ |
155 | ␊ |
156 | virtual IOService * probe(IOService * provider, SInt32 * score);␊ |
157 | ␊ |
158 | /*␊ |
159 | * Determine whether the provider media contains CD partitions.␊ |
160 | */␊ |
161 | ␊ |
162 | virtual bool start(IOService * provider);␊ |
163 | ␊ |
164 | /*␊ |
165 | * Read data from the storage object at the specified byte offset into the␊ |
166 | * specified buffer, asynchronously. When the read completes, the caller␊ |
167 | * will be notified via the specified completion action.␊ |
168 | *␊ |
169 | * The buffer will be retained for the duration of the read.␊ |
170 | *␊ |
171 | * For the CD partition scheme, we convert the read from a partition␊ |
172 | * object into the appropriate readCD command to our provider media.␊ |
173 | */␊ |
174 | ␊ |
175 | virtual void read(IOService * client,␊ |
176 | UInt64 byteStart,␊ |
177 | IOMemoryDescriptor * buffer,␊ |
178 | IOStorageAttributes * attributes,␊ |
179 | IOStorageCompletion * completion);␊ |
180 | ␊ |
181 | /*␊ |
182 | * Write data into the storage object at the specified byte offset from the␊ |
183 | * specified buffer, asynchronously. When the write completes, the caller␊ |
184 | * will be notified via the specified completion action.␊ |
185 | *␊ |
186 | * The buffer will be retained for the duration of the write.␊ |
187 | *␊ |
188 | * For the CD partition scheme, we convert the write from a partition␊ |
189 | * object into the appropriate writeCD command to our provider media.␊ |
190 | */␊ |
191 | ␊ |
192 | virtual void write(IOService * client,␊ |
193 | UInt64 byteStart,␊ |
194 | IOMemoryDescriptor * buffer,␊ |
195 | IOStorageAttributes * attributes,␊ |
196 | IOStorageCompletion * completion);␊ |
197 | ␊ |
198 | /*␊ |
199 | * Obtain this object's provider. We override the superclass's method␊ |
200 | * to return a more specific subclass of OSObject -- IOCDMedia. This␊ |
201 | * method serves simply as a convenience to subclass developers.␊ |
202 | */␊ |
203 | ␊ |
204 | virtual IOCDMedia * getProvider() const;␊ |
205 | ␊ |
206 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 0);␊ |
207 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 1);␊ |
208 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 2);␊ |
209 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 3);␊ |
210 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 4);␊ |
211 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 5);␊ |
212 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 6);␊ |
213 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 7);␊ |
214 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 8);␊ |
215 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 9);␊ |
216 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 10);␊ |
217 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 11);␊ |
218 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 12);␊ |
219 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 13);␊ |
220 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 14);␊ |
221 | OSMetaClassDeclareReservedUnused(IOCDPartitionScheme, 15);␊ |
222 | };␊ |
223 | ␊ |
224 | #endif /* __cplusplus */␊ |
225 | #endif /* KERNEL */␊ |
226 | #endif /* !_IOCDPARTITIONSCHEME_H */␊ |
227 |