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#ifdef XNU_KERNEL_PRIVATE 76/********************************************************************* 77* Check libsyscall/mach/err_libkern.sub when editing or adding 78* result codes! 79*********************************************************************/ 80#endif /* XNU_KERNEL_PRIVATE */ 81 82/*! 83 * @typedef OSReturn 84 * @abstract The return type for many Libkern functions. 85 */ 86typedef kern_return_t OSReturn; 87 88#ifndef sys_libkern 89#define sys_libkern err_system(0x37) 90#endif /* sys_libkern */ 91 92#define sub_libkern_common err_sub(0) 93#define sub_libkern_metaclass err_sub(1) 94#define sub_libkern_reserved err_sub(-1) 95 96#define libkern_common_err(return) (sys_libkern|sub_libkern_common|(return)) 97#define libkern_metaclass_err(return) (sys_libkern|sub_libkern_metaclass|(return)) 98 99/* See OSKextLib.h for these 100 * #define sub_libkern_kext err_sub(2) 101 * #define libkern_kext_err(code) (sys_libkern|sub_libkern_kext|(code)) 102 */ 103 104/*! 105 * @define kOSReturnSuccess 106 * @abstract Operation successful. 107 * Equal to <code>@link //apple_ref/c/econst/KERN_SUCCESS 108 * KERN_SUCCESS@/link</code>. 109 */ 110#define kOSReturnSuccess KERN_SUCCESS 111 112/*! 113 * @define kOSReturnError 114 * @abstract Unspecified Libkern error. 115 * <b>Not equal</b> to 116 * <code>@link //apple_ref/c/econst/KERN_FAILURE 117 * KERN_FAILURE@/link</code>. 118 */ 119#define kOSReturnError libkern_common_err(1) 120 121/*! 122 * @define kOSMetaClassInternal 123 * @abstract Internal OSMetaClass run-time error. 124 */ 125#define kOSMetaClassInternal libkern_metaclass_err(1) 126 127/*! 128 * @define kOSMetaClassHasInstances 129 * @abstract A kext cannot be unloaded because there are instances 130 * derived from Libkern C++ classes that it defines. 131 */ 132#define kOSMetaClassHasInstances libkern_metaclass_err(2) 133 134/*! 135 * @define kOSMetaClassNoInit 136 * @abstract Internal error: The Libkern C++ class registration system 137 * was not properly initialized during kext loading. 138 */ 139#define kOSMetaClassNoInit libkern_metaclass_err(3) 140// OSMetaClass::preModLoad wasn't called, runtime internal error 141 142/*! 143 * @define kOSMetaClassNoTempData 144 * @abstract Internal error: An allocation failure occurred 145 * registering Libkern C++ classes during kext loading. 146 */ 147#define kOSMetaClassNoTempData libkern_metaclass_err(4) 148// Allocation failure internal data 149 150/*! 151 * @define kOSMetaClassNoDicts 152 * @abstract Internal error: An allocation failure occurred 153 * registering Libkern C++ classes during kext loading. 154 */ 155#define kOSMetaClassNoDicts libkern_metaclass_err(5) 156// Allocation failure for Metaclass internal dictionaries 157 158/*! 159 * @define kOSMetaClassNoKModSet 160 * @abstract Internal error: An allocation failure occurred 161 * registering Libkern C++ classes during kext loading. 162 */ 163#define kOSMetaClassNoKModSet libkern_metaclass_err(6) 164// Allocation failure for internal kmodule set 165 166/*! 167 * @define kOSMetaClassNoInsKModSet 168 * @abstract Internal error: An error occurred registering 169 * a specific Libkern C++ class during kext loading. 170 */ 171#define kOSMetaClassNoInsKModSet libkern_metaclass_err(7) 172// Can't insert the KMod set into the module dictionary 173 174/*! 175 * @define kOSMetaClassNoSuper 176 * @abstract Internal error: No superclass can be found 177 * for a specific Libkern C++ class during kext loading. 178 */ 179#define kOSMetaClassNoSuper libkern_metaclass_err(8) 180 181/*! 182 * @define kOSMetaClassInstNoSuper 183 * @abstract Internal error: No superclass can be found when constructing 184 * an instance of a Libkern C++ class. 185 */ 186#define kOSMetaClassInstNoSuper libkern_metaclass_err(9) 187 188/*! 189 * @define kOSMetaClassDuplicateClass 190 * @abstract A duplicate Libkern C++ classname was encountered 191 * during kext loading. 192 */ 193#define kOSMetaClassDuplicateClass libkern_metaclass_err(10) 194 195/*! 196 * @define kOSMetaClassNoKext 197 * @abstract Internal error: The kext for a Libkern C++ class 198 * can't be found during kext loading. 199 */ 200#define kOSMetaClassNoKext libkern_metaclass_err(11) 201 202__END_DECLS 203 204#endif /* ! __LIBKERN_OSRETURN_H */ 205