X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=support%2Fsys-mman.c;h=ad74ef2ad02f4ec8e35e55ae0ed8a86ae1860e98;hb=ef7a4c06206976de7ef2e974267407347ddb75a4;hp=f885d11b82195f45ff638b940222c82000e1882b;hpb=3d43cfdfccc1aa699e599c39f91fb41231304da9;p=mono.git diff --git a/support/sys-mman.c b/support/sys-mman.c index f885d11b821..ad74ef2ad02 100644 --- a/support/sys-mman.c +++ b/support/sys-mman.c @@ -7,9 +7,13 @@ * Copyright (C) 2004-2006 Jonathan Pryor */ +#include + +#ifndef __OpenBSD__ #define _XOPEN_SOURCE 600 +#endif -#ifdef PLATFORM_MACOSX +#ifdef HOST_DARWIN /* For mincore () */ #define _DARWIN_C_SOURCE #endif @@ -18,10 +22,16 @@ #define __BSD_VISIBLE 1 #endif +#ifdef __NetBSD__ +/* For mincore () */ +#define _NETBSD_SOURCE +#endif + #include #include #include +#include "mono/utils/mono-compiler.h" #include "map.h" #include "mph.h" @@ -79,17 +89,25 @@ Mono_Posix_Syscall_msync (void *start, mph_size_t len, int flags) int Mono_Posix_Syscall_mlock (void *start, mph_size_t len) { +#if !defined(HAVE_MINCORE) + return ENOSYS; +#else mph_return_if_size_t_overflow (len); return mlock (start, (size_t) len); +#endif } int Mono_Posix_Syscall_munlock (void *start, mph_size_t len) { +#if defined(__HAIKU__) + return ENOSYS; +#else mph_return_if_size_t_overflow (len); return munlock (start, (size_t) len); +#endif } #ifdef HAVE_MREMAP @@ -105,17 +123,28 @@ Mono_Posix_Syscall_mremap (void *old_address, mph_size_t old_size, if (Mono_Posix_FromMremapFlags (flags, &_flags) == -1) return MAP_FAILED; +#if defined(linux) return mremap (old_address, (size_t) old_size, (size_t) new_size, (unsigned long) _flags); +#elif defined(__NetBSD__) + return mremap (old_address, (size_t) old_size, old_address, + (size_t) new_size, (unsigned long) _flags); +#else +#error Port me +#endif } #endif /* def HAVE_MREMAP */ int Mono_Posix_Syscall_mincore (void *start, mph_size_t length, unsigned char *vec) { +#if defined(__HAIKU__) + return ENOSYS; +#else mph_return_if_size_t_overflow (length); return mincore (start, (size_t) length, (void*)vec); +#endif } #ifdef HAVE_POSIX_MADVISE