extend OS-level allocation interface with malloc_dirty_pages

svn: r5517
This commit is contained in:
Matthew Flatt 2007-01-31 05:09:53 +00:00
parent ebb8d0f39a
commit c8cab191a0
4 changed files with 22 additions and 3 deletions

View File

@ -24,7 +24,7 @@
static int page_size; /* OS page size */
static void *malloc_pages(size_t len, size_t alignment)
static void *malloc_dirty_pages(size_t len, size_t alignment)
{
void *r;
size_t extra = 0;
@ -52,6 +52,14 @@ static void *malloc_pages(size_t len, size_t alignment)
return r;
}
static void *malloc_pages(size_t len, size_t alignment)
{
void *p;
p = malloc_dirty_pages(len, alignment);
memset(p, 0, len);
return p;
}
static void system_free_pages(void *p, size_t len)
{
free(p);

View File

@ -116,6 +116,8 @@ static void *malloc_pages(size_t len, size_t alignment)
return r;
}
#define malloc_dirty_pages(size,align) malloc_pages(size,align)
static void system_free_pages(void *p, size_t len)
{
if (munmap(p, len)) {

View File

@ -24,14 +24,13 @@
# define CHECK_USED_AGAINST_MAX(x) /* empty */
#endif
inline static void *malloc_pages(size_t len, size_t alignment)
inline static void *malloc_dirty_pages(size_t len, size_t alignment)
{
void *p;
CHECK_USED_AGAINST_MAX(len);
p = smemalign(alignment, len);
memset(p, 0, len);
ACTUALLY_ALLOCATING_PAGES(len);
LOGICALLY_ALLOCATING_PAGES(len);
@ -39,6 +38,14 @@ inline static void *malloc_pages(size_t len, size_t alignment)
return p;
}
inline static void *malloc_pages(size_t len, size_t alignment)
{
void *p;
p = malloc_dirty_pages(len, alignment);
memset(p, 0, len);
return p;
}
static void free_pages(void *p, size_t len)
{
free_used_pages(len);

View File

@ -67,6 +67,8 @@ static void *malloc_pages(size_t len, size_t alignment)
PAGE_READWRITE);
}
#define malloc_dirty_pages(size,align) malloc_pages(size,align)
static void free_pages(void *p, size_t len)
{
LOGICALLY_FREEING_PAGES(len);