1/* -*- mode: C++; c-basic-offset: 4; tab-width: 4 -*- 2 * 3 * Copyright (c) 2004-2013 Apple Inc. All rights reserved. 4 * 5 * @APPLE_LICENSE_HEADER_START@ 6 * 7 * This file contains Original Code and/or Modifications of Original Code 8 * as defined in and that are subject to the Apple Public Source License 9 * Version 2.0 (the 'License'). You may not use this file except in 10 * compliance with the License. Please obtain a copy of the License at 11 * http://www.opensource.apple.com/apsl/ and read it before using this 12 * file. 13 * 14 * The Original Code and all software distributed under the License are 15 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 19 * Please see the License for the specific language governing rights and 20 * limitations under the License. 21 * 22 * @APPLE_LICENSE_HEADER_END@ 23 */ 24 25 26#ifndef __DYLD_SYSCALL_HELPERS__ 27#define __DYLD_SYSCALL_HELPERS__ 28 29#include <dirent.h> 30 31#if __cplusplus 32namespace dyld { 33#endif 34 35 // 36 // This file contains the table of function pointers the host dyld supplies 37 // to the iOS simulator dyld. 38 // 39 struct SyscallHelpers 40 { 41 uintptr_t version; 42 int (*open)(const char* path, int oflag, int extra); 43 int (*close)(int fd); 44 ssize_t (*pread)(int fd, void* buf, size_t nbyte, off_t offset); 45 ssize_t (*write)(int fd, const void* buf, size_t nbyte); 46 void* (*mmap)(void* addr, size_t len, int prot, int flags, int fd, off_t offset); 47 int (*munmap)(void* addr, size_t len); 48 int (*madvise)(void* addr, size_t len, int advice); 49 int (*stat)(const char* path, struct stat* buf); 50 int (*fcntl)(int fildes, int cmd, void* result); 51 int (*ioctl)(int fildes, unsigned long request, void* result); 52 int (*issetugid)(void); 53 char* (*getcwd)(char* buf, size_t size); 54 char* (*realpath)(const char* file_name, char* resolved_name); 55 kern_return_t (*vm_allocate)(vm_map_t target_task, vm_address_t *address, vm_size_t size, int flags); 56 kern_return_t (*vm_deallocate)(vm_map_t target_task, vm_address_t address, vm_size_t size); 57 kern_return_t (*vm_protect)(vm_map_t target_task, vm_address_t address, vm_size_t size, boolean_t max, vm_prot_t prot); 58 void (*vlog)(const char* format, va_list list); 59 void (*vwarn)(const char* format, va_list list); 60 int (*pthread_mutex_lock)(pthread_mutex_t* m); 61 int (*pthread_mutex_unlock)(pthread_mutex_t* m); 62 mach_port_t (*mach_thread_self)(void); 63 kern_return_t (*mach_port_deallocate)(ipc_space_t task, mach_port_name_t name); 64 mach_port_name_t(*task_self_trap)(void); 65 kern_return_t (*mach_timebase_info)(mach_timebase_info_t info); 66 bool (*OSAtomicCompareAndSwapPtrBarrier)(void* old, void* nw, void * volatile *value); 67 void (*OSMemoryBarrier)(void); 68 void* (*getProcessInfo)(void); // returns dyld_all_image_infos*; 69 int* (*errnoAddress)(); 70 uint64_t (*mach_absolute_time)(); 71 // Added in version 2 72 kern_return_t (*thread_switch)(mach_port_name_t, int, mach_msg_timeout_t); 73 // Added in version 3 74 DIR* (*opendir)(const char* path); 75 int (*readdir_r)(DIR* dirp, struct dirent* entry, struct dirent **result); 76 int (*closedir)(DIR* dirp); 77 }; 78 79 extern const struct SyscallHelpers* gSyscallHelpers; 80 81 82#if __cplusplus 83} 84#endif 85 86#endif