]> git.saurik.com Git - apple/dyld.git/blob - src/dyldSyscallInterface.h
12be7db67af6d708ff685f47c13e57ace782ba55
[apple/dyld.git] / src / dyldSyscallInterface.h
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
32 namespace 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