// Replacement for sys/mman.h which factors out platform differences.

#include <sys/mman.h>

#if defined(VGO_darwin)
#  define MAP_ANONYMOUS MAP_ANON
#endif


#include <assert.h>
#include <unistd.h>

// Map a page, then unmap it, then return that address.  That
// guarantees to give an address which will fault when accessed,
// without making any assumptions about the layout of the address
// space.

__attribute__((unused))
static void* get_unmapped_page(void)
{
   void* ptr;
   int r;
   long pagesz = sysconf(_SC_PAGE_SIZE);
   assert(pagesz == 4096 || pagesz == 16384 || pagesz == 65536);
   ptr = mmap(0, pagesz, PROT_READ, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
   assert(ptr != (void*)-1);
   r = munmap(ptr, pagesz);
   assert(r == 0);
   return ptr;
}

