extend OS-level allocation interface with malloc_dirty_pages
svn: r5517
This commit is contained in:
parent
ebb8d0f39a
commit
c8cab191a0
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
static int page_size; /* OS page size */
|
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;
|
void *r;
|
||||||
size_t extra = 0;
|
size_t extra = 0;
|
||||||
|
@ -52,6 +52,14 @@ static void *malloc_pages(size_t len, size_t alignment)
|
||||||
return r;
|
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)
|
static void system_free_pages(void *p, size_t len)
|
||||||
{
|
{
|
||||||
free(p);
|
free(p);
|
||||||
|
|
|
@ -116,6 +116,8 @@ static void *malloc_pages(size_t len, size_t alignment)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define malloc_dirty_pages(size,align) malloc_pages(size,align)
|
||||||
|
|
||||||
static void system_free_pages(void *p, size_t len)
|
static void system_free_pages(void *p, size_t len)
|
||||||
{
|
{
|
||||||
if (munmap(p, len)) {
|
if (munmap(p, len)) {
|
||||||
|
|
|
@ -24,14 +24,13 @@
|
||||||
# define CHECK_USED_AGAINST_MAX(x) /* empty */
|
# define CHECK_USED_AGAINST_MAX(x) /* empty */
|
||||||
#endif
|
#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;
|
void *p;
|
||||||
|
|
||||||
CHECK_USED_AGAINST_MAX(len);
|
CHECK_USED_AGAINST_MAX(len);
|
||||||
|
|
||||||
p = smemalign(alignment, len);
|
p = smemalign(alignment, len);
|
||||||
memset(p, 0, len);
|
|
||||||
|
|
||||||
ACTUALLY_ALLOCATING_PAGES(len);
|
ACTUALLY_ALLOCATING_PAGES(len);
|
||||||
LOGICALLY_ALLOCATING_PAGES(len);
|
LOGICALLY_ALLOCATING_PAGES(len);
|
||||||
|
@ -39,6 +38,14 @@ inline static void *malloc_pages(size_t len, size_t alignment)
|
||||||
return p;
|
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)
|
static void free_pages(void *p, size_t len)
|
||||||
{
|
{
|
||||||
free_used_pages(len);
|
free_used_pages(len);
|
||||||
|
|
|
@ -67,6 +67,8 @@ static void *malloc_pages(size_t len, size_t alignment)
|
||||||
PAGE_READWRITE);
|
PAGE_READWRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define malloc_dirty_pages(size,align) malloc_pages(size,align)
|
||||||
|
|
||||||
static void free_pages(void *p, size_t len)
|
static void free_pages(void *p, size_t len)
|
||||||
{
|
{
|
||||||
LOGICALLY_FREEING_PAGES(len);
|
LOGICALLY_FREEING_PAGES(len);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user