X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/060df5ea7c632b1ac8cc8aac1fb59758165c2084..6d2010ae8f7a6078e10b361c6962983bab233e0f:/libsyscall/wrappers/_libkernel_init.h diff --git a/libsyscall/wrappers/_libkernel_init.h b/libsyscall/wrappers/_libkernel_init.h new file mode 100644 index 000000000..609975abd --- /dev/null +++ b/libsyscall/wrappers/_libkernel_init.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2010 Apple Inc. All rights reserved. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. + * + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ + */ + +#ifndef __LIBKERNEL_INIT_H +#define __LIBKERNEL_INIT_H + +#include + +typedef struct _libkernel_functions { + /* for mach dependencies on libc */ + mach_port_t (*get_reply_port)(void); + void (*set_reply_port)(mach_port_t); + + /* dlsym() for looking up catch_exception_raise */ + void* (*dlsym)(void*, const char*); + + /* placeholders for struct layout compatibility with Libsystem */ + void *_placeholder_1; + void *_placeholder_2; + + /* for setting errno in libc */ + void (*set_errno)(int); + int* (*get_errno)(void); + +} _libkernel_functions_t; + +void _libkernel_init(_libkernel_functions_t fns); + +#endif // __LIBKERNEL_INIT_H`