xref: /NextBSD/include/libkern/OSReturn.h (revision 33da5adc555b3bc29986eeadca03829e4ad06b1e)
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 __BEGIN_DECLS
45 
46 #include <mach/error.h>
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  */
80 typedef 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 */
199