master
  1/*
  2 * Copyright (c) 2000 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 * Copyright (c) 1998 Apple Inc.  All rights reserved.
 30 *
 31 * HISTORY
 32 *
 33 */
 34
 35/*
 36 * Core OSReturn values.
 37 */
 38
 39#ifndef __LIBKERN_OSRETURN_H
 40#define __LIBKERN_OSRETURN_H
 41
 42#include <sys/cdefs.h>
 43
 44#include <mach/error.h>
 45
 46__BEGIN_DECLS
 47
 48
 49/*!
 50 * @header
 51 *
 52 * Declares functions, basic return values, and other constants
 53 * related to kernel extensions (kexts).
 54 */
 55
 56#if PRAGMA_MARK
 57#pragma mark Core OSReturn Values for Libkern
 58#endif
 59/*********************************************************************
 60* Core OSReturn Values for Libkern
 61*********************************************************************/
 62/*!
 63 * @group Core OSReturn Values for Libkern
 64 * Some kext and I/O Kit functions can return these values,
 65 * as well as  other values of
 66 * <code>kern_return_t</code>.
 67 *
 68 * Many of these return values represent internal errors
 69 * in the Libkern C++ run-time typing information system
 70 * based on @link //apple_ref/doc/class/OSMetaClass OSMetaClass@/link;
 71 * you are unlikely to ever see them.
 72 *
 73 */
 74
 75
 76/*!
 77 * @typedef  OSReturn
 78 * @abstract The return type for many Libkern functions.
 79 */
 80typedef kern_return_t OSReturn;
 81
 82#ifndef sys_libkern
 83#define sys_libkern                   err_system(0x37)
 84#endif /* sys_libkern */
 85
 86#define sub_libkern_common            err_sub(0)
 87#define sub_libkern_metaclass         err_sub(1)
 88#define sub_libkern_reserved          err_sub(-1)
 89
 90#define libkern_common_err(return )    (sys_libkern|sub_libkern_common|(return))
 91#define libkern_metaclass_err(return ) (sys_libkern|sub_libkern_metaclass|(return))
 92
 93/* See OSKextLib.h for these
 94 * #define sub_libkern_kext           err_sub(2)
 95 * #define libkern_kext_err(code)     (sys_libkern|sub_libkern_kext|(code))
 96 */
 97
 98/*!
 99 * @define   kOSReturnSuccess
100 * @abstract Operation successful.
101 *           Equal to <code>@link //apple_ref/c/econst/KERN_SUCCESS
102 *           KERN_SUCCESS@/link</code>.
103 */
104#define kOSReturnSuccess              KERN_SUCCESS
105
106/*!
107 * @define   kOSReturnError
108 * @abstract Unspecified Libkern error.
109 *           <b>Not equal</b> to
110 *           <code>@link //apple_ref/c/econst/KERN_FAILURE
111 *           KERN_FAILURE@/link</code>.
112 */
113#define kOSReturnError                libkern_common_err(1)
114
115/*!
116 * @define   kOSMetaClassInternal
117 * @abstract Internal OSMetaClass run-time error.
118 */
119#define kOSMetaClassInternal          libkern_metaclass_err(1)
120
121/*!
122 * @define   kOSMetaClassHasInstances
123 * @abstract A kext cannot be unloaded because there are instances
124 *           derived from Libkern C++ classes that it defines.
125 */
126#define kOSMetaClassHasInstances      libkern_metaclass_err(2)
127
128/*!
129 * @define   kOSMetaClassNoInit
130 * @abstract Internal error: The Libkern C++ class registration system
131 *           was not properly initialized during kext loading.
132 */
133#define kOSMetaClassNoInit            libkern_metaclass_err(3)
134// OSMetaClass::preModLoad wasn't called, runtime internal error
135
136/*!
137 * @define   kOSMetaClassNoTempData
138 * @abstract Internal error: An allocation failure occurred
139 *           registering Libkern C++ classes during kext loading.
140 */
141#define kOSMetaClassNoTempData        libkern_metaclass_err(4)
142// Allocation failure internal data
143
144/*!
145 * @define   kOSMetaClassNoDicts
146 * @abstract Internal error: An allocation failure occurred
147 *           registering Libkern C++ classes during kext loading.
148 */
149#define kOSMetaClassNoDicts           libkern_metaclass_err(5)
150// Allocation failure for Metaclass internal dictionaries
151
152/*!
153 * @define   kOSMetaClassNoKModSet
154 * @abstract Internal error: An allocation failure occurred
155 *           registering Libkern C++ classes during kext loading.
156 */
157#define kOSMetaClassNoKModSet         libkern_metaclass_err(6)
158// Allocation failure for internal kmodule set
159
160/*!
161 * @define   kOSMetaClassNoInsKModSet
162 * @abstract Internal error: An error occurred registering
163 *           a specific Libkern C++ class during kext loading.
164 */
165#define kOSMetaClassNoInsKModSet      libkern_metaclass_err(7)
166// Can't insert the KMod set into the module dictionary
167
168/*!
169 * @define   kOSMetaClassNoSuper
170 * @abstract Internal error: No superclass can be found
171 *           for a specific Libkern C++ class during kext loading.
172 */
173#define kOSMetaClassNoSuper           libkern_metaclass_err(8)
174
175/*!
176 * @define   kOSMetaClassInstNoSuper
177 * @abstract Internal error: No superclass can be found when constructing
178 *           an instance of a Libkern C++ class.
179 */
180#define kOSMetaClassInstNoSuper       libkern_metaclass_err(9)
181
182/*!
183 * @define   kOSMetaClassDuplicateClass
184 * @abstract A duplicate Libkern C++ classname was encountered
185 *           during kext loading.
186 */
187#define kOSMetaClassDuplicateClass    libkern_metaclass_err(10)
188
189/*!
190 * @define   kOSMetaClassNoKext
191 * @abstract Internal error: The kext for a Libkern C++ class
192 *           can't be found during kext loading.
193 */
194#define kOSMetaClassNoKext            libkern_metaclass_err(11)
195
196__END_DECLS
197
198#endif /* ! __LIBKERN_OSRETURN_H */