X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Futils%2Fdlmalloc.c;h=296893ff2e7f2a77a8e7b5e46f4684d45421b8a4;hb=1004d95b6b70e8b67a2b6782e0832faab9fa269a;hp=2ce2a6ea95e4afb928e2bb91d7bd0df263c936ae;hpb=cc40e2e17dc6fd2dae6d3a4c7d7ab43570d63546;p=mono.git diff --git a/mono/utils/dlmalloc.c b/mono/utils/dlmalloc.c index 2ce2a6ea95e..296893ff2e7 100644 --- a/mono/utils/dlmalloc.c +++ b/mono/utils/dlmalloc.c @@ -342,7 +342,7 @@ HAVE_MMAP default: 1 (true) able to unmap memory that may have be allocated using multiple calls to MMAP, so long as they are adjacent. -HAVE_MREMAP default: 1 on linux, else 0 +HAVE_MREMAP default: 1 on linux and NetBSD, else 0 If true realloc() uses mremap() to re-allocate large blocks and extend or shrink allocation spaces. @@ -484,13 +484,6 @@ DEFAULT_MMAP_THRESHOLD default: 256K #endif /* HAVE_MORECORE */ #endif /* DARWIN */ -#if defined(__native_client__) -#undef HAVE_MMAP -#undef HAVE_MREMAP -#define HAVE_MMAP 0 -#define HAVE_MREMAP 0 -#endif - #ifndef LACKS_SYS_TYPES_H #include /* For size_t */ #endif /* LACKS_SYS_TYPES_H */ @@ -536,11 +529,11 @@ DEFAULT_MMAP_THRESHOLD default: 256K #define MMAP_CLEARS 1 #endif /* MMAP_CLEARS */ #ifndef HAVE_MREMAP -#ifdef linux +#if defined(linux) || defined(__NetBSD__) #define HAVE_MREMAP 1 -#else /* linux */ +#else /* linux || __NetBSD__ */ #define HAVE_MREMAP 0 -#endif /* linux */ +#endif /* linux || __NetBSD__ */ #endif /* HAVE_MREMAP */ #ifndef MALLOC_FAILURE_ACTION #define MALLOC_FAILURE_ACTION errno = ENOMEM; @@ -1375,7 +1368,13 @@ static int win32munmap(void* ptr, size_t size) { #endif /* HAVE_MMAP */ #if HAVE_MMAP && HAVE_MREMAP +#if defined(linux) #define CALL_MREMAP(addr, osz, nsz, mv) mremap((addr), (osz), (nsz), (mv)) +#elif defined(__NetBSD__) +#define CALL_MREMAP(addr, osz, nsz, mv) mremap((addr), (osz), (addr), (nsz), (mv)) +#else +#define CALL_MREMAP(addr, osz, nsz, mv) MFAIL +#endif #else /* HAVE_MMAP && HAVE_MREMAP */ #define CALL_MREMAP(addr, osz, nsz, mv) MFAIL #endif /* HAVE_MMAP && HAVE_MREMAP */