1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/*
FALCON - The Falcon Programming Language.
FILE: heap_bsd.cpp
Class for heap management - system specific for BSD compliant
systems.
-------------------------------------------------------------------
Author: Giancarlo Niccolai
Begin: Mer 14 Gen 2009 20:26:53 CET
-------------------------------------------------------------------
(C) Copyright 2009: the FALCON developers (see list in AUTHORS file)
See LICENSE file for licensing details.
*/
/** \file
Class for heap management - system specific for POSIX compliant
systems.
*/
#include <falcon/heap.h>
#include <falcon/fassert.h>
#include <unistd.h>
#include <sys/mman.h>
namespace Falcon
{
static int s_pageSize;
HeapMem Heap;
HeapMem::HeapMem()
{
s_pageSize = getpagesize();
}
HeapMem::~HeapMem()
{
}
namespace Sys {
int sys_pageSize()
{
return s_pageSize;
}
void *sys_allocPage()
{
void *ret = mmap(((void *)0), s_pageSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
fassert( ret != MAP_FAILED );
return ret;
}
void sys_freePage( void *page )
{
munmap( page, s_pageSize );
}
}
}
/* end of heap_bsd.cpp */
|