this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

sys/mman.h functions compat improvements

+80 -20
+1
src/libSystem/CMakeLists.txt
··· 96 96 kernel-bsd/fs.cpp 97 97 kernel-bsd/fcntl.cpp 98 98 kernel-bsd/proc.cpp 99 + kernel-bsd/mman.cpp 99 100 ) 100 101 101 102 set(machkern_SRCS
+46
src/libSystem/kernel-bsd/mman.cpp
··· 1 + #include "mman.h" 2 + #include <sys/mman.h> 3 + #include <util/debug.h> 4 + #include "../common/auto.h" 5 + 6 + const static Darling::MappedFlag mmapFlags[] = { 7 + { DARWIN_MAP_ANON, MAP_ANONYMOUS }, 8 + { DARWIN_MAP_FIXED, MAP_FIXED }, 9 + { DARWIN_MAP_PRIVATE, MAP_PRIVATE }, 10 + { DARWIN_MAP_SHARED, MAP_SHARED }, 11 + }; 12 + 13 + void* __darwin_mmap(void *addr, size_t len, int prot, int flags, int fd, uint64_t offset) 14 + { 15 + int nativeFlags = Darling::flagsDarwinToNative(mmapFlags, sizeof(mmapFlags)/sizeof(mmapFlags[0]), flags); 16 + void* rv = ::mmap(addr, len, prot, nativeFlags, fd, offset); 17 + 18 + if (rv == MAP_FAILED) 19 + errnoOut(); 20 + return rv; 21 + } 22 + 23 + MAP_FUNCTION2(int, munmap, void*, size_t); 24 + MAP_FUNCTION3(int, mprotect, void*, size_t, int); 25 + MAP_FUNCTION3(int, mincore, void*, size_t, unsigned char*); 26 + 27 + int __darwin_minherit(caddr_t addr, size_t len, int inherit) 28 + { 29 + STUB(); 30 + return 0; 31 + } 32 + 33 + int __darwin_madvise(void *addr, size_t len, int advice) 34 + { 35 + if (advice == DARWIN_MADV_FREE) 36 + advice = MADV_DONTNEED; 37 + else if (advice == DARWIN_MADV_ZERO_WIRED_PAGES) 38 + return 0; 39 + 40 + return AutoErrno<int>(madvise, addr, len, advice); 41 + } 42 + 43 + MAP_FUNCTION3(int, posix_madvise, void*, size_t, int); 44 + 45 + MAP_FUNCTION2(int, mlock, const void*, size_t); 46 + MAP_FUNCTION2(int, munlock, const void*, size_t);
+31
src/libSystem/kernel-bsd/mman.h
··· 1 + #ifndef MMAN_H 2 + #define MMAN_H 3 + #include <stddef.h> 4 + #include <stdint.h> 5 + 6 + extern "C" { 7 + 8 + #define DARWIN_MAP_ANON 0x1000 9 + #define DARWIN_MAP_FIXED 16 10 + #define DARWIN_MAP_SHARED 1 11 + #define DARWIN_MAP_PRIVATE 2 12 + 13 + #define DARWIN_MADV_FREE 5 14 + #define DARWIN_MADV_ZERO_WIRED_PAGES 6 15 + 16 + void* __darwin_mmap(void *addr, size_t len, int prot, int flags, int fd, uint64_t offset); 17 + int __darwin_munmap(void *addr, size_t len); 18 + 19 + int __darwin_mprotect(void *addr, size_t len, int prot); 20 + int __darwin_mincore(void* addr, size_t len, unsigned char *vec); 21 + int __darwin_minherit(void* addr, size_t len, int inherit); 22 + 23 + int __darwin_madvise(void *addr, size_t len, int advice); 24 + int __darwin_posix_madvise(void *addr, size_t len, int advice); 25 + 26 + int __darwin_mlock(const void *addr, size_t len); 27 + int __darwin_munlock(const void *addr, size_t len); 28 + 29 + } 30 + 31 + #endif
+2 -1
src/libSystem/libc/libc-stub.h
··· 1 1 #ifndef LIBC_STUB_H 2 2 #define LIBC_STUB_H 3 + #include <util/debug.h> 3 4 4 - #define LIBC_STUB() { fprintf(stderr, "LIBC_STUB(): %s\n", __PRETTY_FUNCTION__); } 5 + #define LIBC_STUB() STUB() 5 6 6 7 #endif 7 8
-19
src/libSystem/libc/mac.c
··· 73 73 void libiconv_set_relocation_prefix(const char* orig, const char* curr) { 74 74 } 75 75 76 - void *__darwin_mmap(void *addr, size_t length, int prot, int flags, 77 - int fd, off_t offset) { 78 - LOGF("mmap: addr=%p length=%lu prot=%d flags=%d fd=%d offset=%lu\n", 79 - addr, (unsigned long)length, prot, flags, fd, offset); 80 - 81 - // MAP_ANON is 0x1000 on darwin but 0x20 on linux. 82 - // 83 - // The following flags are darwin only. 84 - // #define MAP_RENAME 0x0020 /* Sun: rename private pages to file */ 85 - // #define MAP_NORESERVE 0x0040 /* Sun: don't reserve needed swap area */ 86 - // #define MAP_RESERVED0080 0x0080 /* previously unimplemented MAP_INHERIT */ 87 - // #define MAP_NOEXTEND 0x0100 /* for MAP_FILE, don't change file size */ 88 - // #define MAP_HASSEMAPHORE 0x0200 /* region may contain semaphores */ 89 - // #define MAP_NOCACHE 0x0400 /* don't cache pages for this mapping */ 90 - flags = (flags & 0x1f) | (flags & 0x1000 ? MAP_ANONYMOUS : 0); 91 - return mmap(addr, length, prot, flags, fd, offset); 92 - } 93 - 94 - 95 76 int task_get_exception_ports() { 96 77 fprintf(stderr, "task_get_exception_ports\n"); 97 78 return 0;