Root/
Source at commit 1808 created 12 years 4 months ago. By blackosx, Revise layout of package installer 'Welcome' file so it looks cleaner. Change the copyright notice to begin from 2009 as seen in the Chameleon 2.0 r431 installer. Should this date be set earlier? | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 2008 Apple Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_OSREFERENCE_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. The rights granted to you under the License␊ |
10 | * may not be used to create, or enable the creation or redistribution of,␊ |
11 | * unlawful or unlicensed copies of an Apple operating system, or to␊ |
12 | * circumvent, violate, or enable the circumvention or violation of, any␊ |
13 | * terms of an Apple operating system software license agreement.␊ |
14 | *␊ |
15 | * Please obtain a copy of the License at␊ |
16 | * http://www.opensource.apple.com/apsl/ and read it before using this file.␊ |
17 | *␊ |
18 | * The Original Code and all software distributed under the License are␊ |
19 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
20 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
21 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
22 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.␊ |
23 | * Please see the License for the specific language governing rights and␊ |
24 | * limitations under the License.␊ |
25 | *␊ |
26 | * @APPLE_OSREFERENCE_LICENSE_HEADER_END@␊ |
27 | */␊ |
28 | ␊ |
29 | #ifndef _LIBKERN_OSKEXTLIB_H␊ |
30 | #define _LIBKERN_OSKEXTLIB_H␊ |
31 | ␊ |
32 | #include <sys/cdefs.h>␊ |
33 | __BEGIN_DECLS␊ |
34 | ␊ |
35 | #include <stdint.h>␊ |
36 | #include <mach/kmod.h>␊ |
37 | #include <mach/vm_types.h>␊ |
38 | ␊ |
39 | #include <CoreFoundation/CoreFoundation.h>␊ |
40 | #include <System/libkern/OSReturn.h>␊ |
41 | ␊ |
42 | /*!␊ |
43 | * @header␊ |
44 | *␊ |
45 | * Declares functions, basic return values, and other constants␊ |
46 | * related to kernel extensions (kexts).␊ |
47 | */␊ |
48 | ␊ |
49 | #if PRAGMA_MARK␊ |
50 | #pragma mark -␊ |
51 | /********************************************************************/␊ |
52 | #pragma mark OSReturn Values for Kernel Extensions␊ |
53 | /********************************************************************/␊ |
54 | #endif␊ |
55 | /*!␊ |
56 | * @group OSReturn Values for Kernel Extensions␊ |
57 | * Many kext-related functions return these values,␊ |
58 | * as well as those defined under␊ |
59 | * <code>@link //apple_ref/c/tdef/OSReturn OSReturn@/link</code>␊ |
60 | * and other variants of <code>kern_return_t</code>.␊ |
61 | */␊ |
62 | ␊ |
63 | ␊ |
64 | #define sub_libkern_kext err_sub(2)␊ |
65 | #define libkern_kext_err(code) (sys_libkern|sub_libkern_kext|(code))␊ |
66 | ␊ |
67 | ␊ |
68 | /*!␊ |
69 | * @define kOSKextReturnInternalError␊ |
70 | * @abstract An internal error in the kext library.␊ |
71 | * Contrast with <code>@link //apple_ref/c/econst/OSReturnError␊ |
72 | * OSReturnError@/link</code>.␊ |
73 | */␊ |
74 | #define kOSKextReturnInternalError libkern_kext_err(0x1)␊ |
75 | ␊ |
76 | /*!␊ |
77 | * @define kOSKextReturnNoMemory␊ |
78 | * @abstract Memory allocation failed.␊ |
79 | */␊ |
80 | #define kOSKextReturnNoMemory libkern_kext_err(0x2)␊ |
81 | ␊ |
82 | /*!␊ |
83 | * @define kOSKextReturnNoResources␊ |
84 | * @abstract Some resource other than memory (such as available load tags)␊ |
85 | * is exhausted.␊ |
86 | */␊ |
87 | #define kOSKextReturnNoResources libkern_kext_err(0x3)␊ |
88 | ␊ |
89 | /*!␊ |
90 | * @define kOSKextReturnNotPrivileged␊ |
91 | * @abstract The caller lacks privileges to perform the requested operation.␊ |
92 | */␊ |
93 | #define kOSKextReturnNotPrivileged libkern_kext_err(0x4)␊ |
94 | ␊ |
95 | /*!␊ |
96 | * @define kOSKextReturnInvalidArgument␊ |
97 | * @abstract Invalid argument.␊ |
98 | */␊ |
99 | #define kOSKextReturnInvalidArgument libkern_kext_err(0x5)␊ |
100 | ␊ |
101 | /*!␊ |
102 | * @define kOSKextReturnNotFound␊ |
103 | * @abstract Search item not found.␊ |
104 | */␊ |
105 | #define kOSKextReturnNotFound libkern_kext_err(0x6)␊ |
106 | ␊ |
107 | /*!␊ |
108 | * @define kOSKextReturnBadData␊ |
109 | * @abstract Malformed data (not used for XML).␊ |
110 | */␊ |
111 | #define kOSKextReturnBadData libkern_kext_err(0x7)␊ |
112 | ␊ |
113 | /*!␊ |
114 | * @define kOSKextReturnSerialization␊ |
115 | * @abstract Error converting or (un)serializing URL, string, or XML.␊ |
116 | */␊ |
117 | #define kOSKextReturnSerialization libkern_kext_err(0x8)␊ |
118 | ␊ |
119 | /*!␊ |
120 | * @define kOSKextReturnUnsupported␊ |
121 | * @abstract Operation is no longer or not yet supported.␊ |
122 | */␊ |
123 | #define kOSKextReturnUnsupported libkern_kext_err(0x9)␊ |
124 | ␊ |
125 | /*!␊ |
126 | * @define kOSKextReturnDisabled␊ |
127 | * @abstract Operation is currently disabled.␊ |
128 | */␊ |
129 | #define kOSKextReturnDisabled libkern_kext_err(0xa)␊ |
130 | ␊ |
131 | /*!␊ |
132 | * @define kOSKextReturnNotAKext␊ |
133 | * @abstract Bundle is not a kernel extension.␊ |
134 | */␊ |
135 | #define kOSKextReturnNotAKext libkern_kext_err(0xb)␊ |
136 | ␊ |
137 | /*!␊ |
138 | * @define kOSKextReturnValidation␊ |
139 | * @abstract Validation failures encountered; check diagnostics for details.␊ |
140 | */␊ |
141 | #define kOSKextReturnValidation libkern_kext_err(0xc)␊ |
142 | ␊ |
143 | /*!␊ |
144 | * @define kOSKextReturnAuthentication␊ |
145 | * @abstract Authetication failures encountered; check diagnostics for details.␊ |
146 | */␊ |
147 | #define kOSKextReturnAuthentication libkern_kext_err(0xd)␊ |
148 | ␊ |
149 | /*!␊ |
150 | * @define kOSKextReturnDependencies␊ |
151 | * @abstract Dependency resolution failures encountered; check diagnostics for details.␊ |
152 | */␊ |
153 | #define kOSKextReturnDependencies libkern_kext_err(0xe)␊ |
154 | ␊ |
155 | /*!␊ |
156 | * @define kOSKextReturnArchNotFound␊ |
157 | * @abstract Kext does not contain code for the requested architecture.␊ |
158 | */␊ |
159 | #define kOSKextReturnArchNotFound libkern_kext_err(0xf)␊ |
160 | ␊ |
161 | /*!␊ |
162 | * @define kOSKextReturnCache␊ |
163 | * @abstract An error occurred processing a system kext cache.␊ |
164 | */␊ |
165 | #define kOSKextReturnCache libkern_kext_err(0x10)␊ |
166 | ␊ |
167 | /*!␊ |
168 | * @define kOSKextReturnDeferred␊ |
169 | * @abstract Operation has been posted asynchronously to user space (kernel only).␊ |
170 | */␊ |
171 | #define kOSKextReturnDeferred libkern_kext_err(0x11)␊ |
172 | ␊ |
173 | /*!␊ |
174 | * @define kOSKextReturnBootLevel␊ |
175 | * @abstract Kext not loadable or operation not allowed at current boot level.␊ |
176 | */␊ |
177 | #define kOSKextReturnBootLevel libkern_kext_err(0x12)␊ |
178 | ␊ |
179 | /*!␊ |
180 | * @define kOSKextReturnNotLoadable␊ |
181 | * @abstract Kext cannot be loaded; check diagnostics for details.␊ |
182 | */␊ |
183 | #define kOSKextReturnNotLoadable libkern_kext_err(0x13)␊ |
184 | ␊ |
185 | /*!␊ |
186 | * @define kOSKextReturnLoadedVersionDiffers␊ |
187 | * @abstract A different version (or executable UUID, or executable by checksum)␊ |
188 | * of the requested kext is already loaded.␊ |
189 | */␊ |
190 | #define kOSKextReturnLoadedVersionDiffers libkern_kext_err(0x14)␊ |
191 | ␊ |
192 | /*!␊ |
193 | * @define kOSKextReturnDependencyLoadError␊ |
194 | * @abstract A load error occurred on a dependency of the kext being loaded.␊ |
195 | */␊ |
196 | #define kOSKextReturnDependencyLoadError libkern_kext_err(0x15)␊ |
197 | ␊ |
198 | /*!␊ |
199 | * @define kOSKextReturnLinkError␊ |
200 | * @abstract A link failure occured with this kext or a dependency.␊ |
201 | */␊ |
202 | #define kOSKextReturnLinkError libkern_kext_err(0x16)␊ |
203 | ␊ |
204 | /*!␊ |
205 | * @define kOSKextReturnStartStopError␊ |
206 | * @abstract The kext start or stop routine returned an error.␊ |
207 | */␊ |
208 | #define kOSKextReturnStartStopError libkern_kext_err(0x17)␊ |
209 | ␊ |
210 | /*!␊ |
211 | * @define kOSKextReturnInUse␊ |
212 | * @abstract The kext is currently in use or has outstanding references,␊ |
213 | * and cannot be unloaded.␊ |
214 | */␊ |
215 | #define kOSKextReturnInUse libkern_kext_err(0x18)␊ |
216 | ␊ |
217 | /*!␊ |
218 | * @define kOSKextReturnTimeout␊ |
219 | * @abstract A kext request has timed out.␊ |
220 | */␊ |
221 | #define kOSKextReturnTimeout libkern_kext_err(0x19)␊ |
222 | ␊ |
223 | /*!␊ |
224 | * @define kOSKextReturnStopping␊ |
225 | * @abstract The kext is in the process of stopping; requests cannot be made.␊ |
226 | */␊ |
227 | #define kOSKextReturnStopping libkern_kext_err(0x1a)␊ |
228 | ␊ |
229 | #if PRAGMA_MARK␊ |
230 | #pragma mark -␊ |
231 | /********************************************************************/␊ |
232 | #pragma mark Kext/OSBundle Property List Keys␊ |
233 | /********************************************************************/␊ |
234 | #endif␊ |
235 | /*!␊ |
236 | * @group Kext Property List Keys␊ |
237 | * These constants cover CFBundle properties defined for kernel extensions.␊ |
238 | * Because they are used in the kernel, if you want to use one with␊ |
239 | * CFBundle APIs you'll need to wrap it in a <code>CFSTR()</code> macro.␊ |
240 | */␊ |
241 | ␊ |
242 | ␊ |
243 | /*!␊ |
244 | * @define kOSBundleCompatibleVersionKey␊ |
245 | * @abstract A string giving the backwards-compatible version of a library kext␊ |
246 | * in extended Mac OS 'vers' format (####.##.##s{1-255} where 's'␊ |
247 | * is a build stage 'd', 'a', 'b', 'f' or 'fc').␊ |
248 | */␊ |
249 | #define kOSBundleCompatibleVersionKey "OSBundleCompatibleVersion"␊ |
250 | ␊ |
251 | /*!␊ |
252 | * @define kOSBundleEnableKextLoggingKey␊ |
253 | * @abstract Set to true to have the kernel kext logging spec applied␊ |
254 | * to the kext.␊ |
255 | * See <code>@link //apple_ref/c/econst/OSKextLogSpec␊ |
256 | * OSKextLogSpec@/link</code>.␊ |
257 | */␊ |
258 | #define kOSBundleEnableKextLoggingKey "OSBundleEnableKextLogging"␊ |
259 | ␊ |
260 | /*!␊ |
261 | * @define kOSBundleIsInterfaceKey␊ |
262 | * @abstract A boolean value indicating whether the kext executable␊ |
263 | * contains only symbol references.␊ |
264 | */␊ |
265 | #define kOSBundleIsInterfaceKey "OSBundleIsInterface"␊ |
266 | ␊ |
267 | /*!␊ |
268 | * @define kOSBundleLibrariesKey␊ |
269 | * @abstract A dictionary listing link dependencies for this kext.␊ |
270 | * Keys are bundle identifiers, values are version strings.␊ |
271 | */␊ |
272 | #define kOSBundleLibrariesKey "OSBundleLibraries"␊ |
273 | ␊ |
274 | /*!␊ |
275 | * @define kOSBundleRequiredKey␊ |
276 | * @abstract A string indicating in which kinds of startup this kext␊ |
277 | * may need to load during early startup (before␊ |
278 | * <code>@link //apple_ref/doc/man/8/kextd kextcache(8)@/link</code>).␊ |
279 | * @discussion␊ |
280 | * The value is one of:␊ |
281 | * <ul>␊ |
282 | * <li>@link kOSBundleRequiredRoot "OSBundleRequiredRoot"@/link</li>␊ |
283 | * <li>@link kOSBundleRequiredLocalRoot "OSBundleRequiredLocalRoot"@/link</li>␊ |
284 | * <li>@link kOSBundleRequiredNetworkRoot "OSBundleRequiredNetworkRoot"@/link</li>␊ |
285 | * <li>@link kOSBundleRequiredSafeBoot "OSBundleRequiredSafeBoot"@/link</li>␊ |
286 | * <li>@link kOSBundleRequiredConsole "OSBundleRequiredConsole"@/link</li>␊ |
287 | * </ul>␊ |
288 | *␊ |
289 | * Use this property judiciously.␊ |
290 | * Every kext that declares a value other than "OSBundleRequiredSafeBoot"␊ |
291 | * increases startup time, as the booter must read it into memory,␊ |
292 | * or startup kext caches must include it.␊ |
293 | */␊ |
294 | #define kOSBundleRequiredKey "OSBundleRequired"␊ |
295 | ␊ |
296 | /*!␊ |
297 | * @define kOSBundleAllowUserLoadKey␊ |
298 | * @abstract A boolean value indicating whether␊ |
299 | * <code>@link //apple_ref/doc/man/8/kextd kextcache(8)@/link</code>␊ |
300 | * will honor a non-root process's request to load a kext.␊ |
301 | * @discussion␊ |
302 | * See <code>@link //apple_ref/doc/compositePage/c/func/KextManagerLoadKextWithURL␊ |
303 | * KextManagerLoadKextWithURL@/link</code>␊ |
304 | * and <code>@link //apple_ref/doc/compositePage/c/func/KextManagerLoadKextWithIdentifier␊ |
305 | * KextManagerLoadKextWithIdentifier@/link</code>.␊ |
306 | */␊ |
307 | #define kOSBundleAllowUserLoadKey "OSBundleAllowUserLoad"␊ |
308 | ␊ |
309 | /*!␊ |
310 | * @define kOSKernelResourceKey␊ |
311 | * @abstract A boolean value indicating whether the kext represents a built-in␊ |
312 | * component of the kernel.␊ |
313 | */␊ |
314 | #define kOSKernelResourceKey "OSKernelResource"␊ |
315 | ␊ |
316 | /*!␊ |
317 | * @define kIOKitPersonalitiesKey␊ |
318 | * @abstract A dictionary of dictionaries used in matching for I/O Kit drivers.␊ |
319 | */␊ |
320 | #define kIOKitPersonalitiesKey "IOKitPersonalities"␊ |
321 | ␊ |
322 | /*␊ |
323 | * @define kIOPersonalityPublisherKey␊ |
324 | * @abstract Used in personalities sent to the I/O Kit,␊ |
325 | * contains the CFBundleIdentifier of the kext␊ |
326 | * that the personality originated in.␊ |
327 | */␊ |
328 | #define kIOPersonalityPublisherKey "IOPersonalityPublisher"␊ |
329 | ␊ |
330 | ␊ |
331 | #if PRAGMA_MARK␊ |
332 | /********************************************************************/␊ |
333 | #pragma mark Kext/OSBundle Property Deprecated Keys␊ |
334 | /********************************************************************/␊ |
335 | #endif␊ |
336 | /*␊ |
337 | * @define kOSBundleDebugLevelKey␊ |
338 | * @abstract␊ |
339 | * Deprecated (used on some releases of Mac OS X prior to 10.6 Snow Leopard).␊ |
340 | * Value is an integer from 1-6, corresponding to the verbose levels␊ |
341 | * of kext tools on those releases.␊ |
342 | * On 10.6 Snow Leopard, use <code>@link OSKextEnableKextLogging␊ |
343 | * OSKextEnableKextLogging@/link</code>.␊ |
344 | */␊ |
345 | #define kOSBundleDebugLevelKey "OSBundleDebugLevel"␊ |
346 | ␊ |
347 | /*!␊ |
348 | * @define kOSBundleSharedExecutableIdentifierKey␊ |
349 | * @abstract Deprecated (used on some releases of Mac OS X␊ |
350 | * prior to 10.6 Snow Leopard).␊ |
351 | * Value is the bundle identifier of the pseudokext␊ |
352 | * that contains an executable shared by this kext.␊ |
353 | */␊ |
354 | #define kOSBundleSharedExecutableIdentifierKey "OSBundleSharedExecutableIdentifier"␊ |
355 | ␊ |
356 | ␊ |
357 | #if PRAGMA_MARK␊ |
358 | /********************************************************************/␊ |
359 | #pragma mark Kext/OSBundle Property List Values␊ |
360 | /********************************************************************/␊ |
361 | #endif␊ |
362 | ␊ |
363 | /*!␊ |
364 | * @group Kext Property List Values␊ |
365 | * These constants encompass established values␊ |
366 | * for kernel extension bundle properties.␊ |
367 | */␊ |
368 | ␊ |
369 | /*!␊ |
370 | * @define kOSKextKernelIdentifier␊ |
371 | * @abstract␊ |
372 | * This is the CFBundleIdentifier user for the kernel itself.␊ |
373 | */␊ |
374 | #define kOSKextKernelIdentifier "__kernel__"␊ |
375 | ␊ |
376 | /*!␊ |
377 | * @define kOSBundleRequiredRoot␊ |
378 | * @abstract␊ |
379 | * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>␊ |
380 | * value indicates that the kext may be needed to mount the root filesystem␊ |
381 | * whether starting from a local or a network volume.␊ |
382 | */␊ |
383 | #define kOSBundleRequiredRoot "Root"␊ |
384 | ␊ |
385 | /*!␊ |
386 | * @define kOSBundleRequiredLocalRoot␊ |
387 | * @abstract␊ |
388 | * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>␊ |
389 | * value indicates that the kext may be needed to mount the root filesystem␊ |
390 | * when starting from a local disk.␊ |
391 | */␊ |
392 | #define kOSBundleRequiredLocalRoot "Local-Root"␊ |
393 | ␊ |
394 | /*!␊ |
395 | * @define kOSBundleRequiredNetworkRoot␊ |
396 | * @abstract␊ |
397 | * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>␊ |
398 | * value indicates that the kext may be needed to mount the root filesystem␊ |
399 | * when starting over a network connection.␊ |
400 | */␊ |
401 | #define kOSBundleRequiredNetworkRoot "Network-Root"␊ |
402 | ␊ |
403 | /*!␊ |
404 | * @define kOSBundleRequiredSafeBoot␊ |
405 | * @abstract␊ |
406 | * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>␊ |
407 | * value indicates that the kext can be loaded during a safe startup.␊ |
408 | * This value does not normally cause the kext to be read by the booter␊ |
409 | * or included in startup kext caches.␊ |
410 | */␊ |
411 | #define kOSBundleRequiredSafeBoot "Safe Boot"␊ |
412 | ␊ |
413 | /*!␊ |
414 | * @define kOSBundleRequiredConsole␊ |
415 | * @abstract␊ |
416 | * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>␊ |
417 | * value indicates that the kext may be needed for console access␊ |
418 | * (specifically in a single-user startup when␊ |
419 | * <code>@link //apple_ref/doc/man/8/kextd kextd(8)@/link</code>.␊ |
420 | * does not run)␊ |
421 | * and should be loaded during early startup.␊ |
422 | */␊ |
423 | #define kOSBundleRequiredConsole "Console"␊ |
424 | ␊ |
425 | ␊ |
426 | #if PRAGMA_MARK␊ |
427 | #pragma mark -␊ |
428 | /********************************************************************/␊ |
429 | #pragma mark Kext Information␊ |
430 | /********************************************************************/␊ |
431 | #endif␊ |
432 | /*!␊ |
433 | * @group Kext Information␊ |
434 | * Types, constants, and macros providing a kext with information␊ |
435 | * about itself.␊ |
436 | */␊ |
437 | ␊ |
438 | /*!␊ |
439 | * @typedef OSKextLoadTag␊ |
440 | *␊ |
441 | * @abstract␊ |
442 | * A unique identifier assigned to a loaded instanace of a kext.␊ |
443 | *␊ |
444 | * @discussion␊ |
445 | * If a kext is unloaded and later reloaded, the new instance␊ |
446 | * has a different load tag.␊ |
447 | *␊ |
448 | * A kext can get its own load tag in the <code>kmod_info_t</code>␊ |
449 | * structure passed into its module start routine, as the␊ |
450 | * <code>id</code> field (cast to this type).␊ |
451 | * You can use the load tag with the functions␊ |
452 | * <code>@link OSKextRetainKextWithLoadTag␊ |
453 | * OSKextRetainKextWithLoadTag@/link</code> and␊ |
454 | * <code>@link OSKextReleaseKextWithLoadTag␊ |
455 | * OSKextReleaseKextWithLoadTag@/link</code>.␊ |
456 | */␊ |
457 | typedef uint32_t OSKextLoadTag;␊ |
458 | ␊ |
459 | /*!␊ |
460 | * @define kOSKextInvalidLoadTag␊ |
461 | *␊ |
462 | * @abstract␊ |
463 | * A load tag value that will never be used for a loaded kext;␊ |
464 | * indicates kext not found.␊ |
465 | */␊ |
466 | #define kOSKextInvalidLoadTag ((OSKextLoadTag)(-1))␊ |
467 | ␊ |
468 | ␊ |
469 | ␊ |
470 | __END_DECLS␊ |
471 | ␊ |
472 | #endif /* _LIBKERN_OSKEXTLIB_H */␊ |
473 |