Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
vppinfra: bihash improvements
[vpp.git]
/
src
/
vppinfra
/
pmalloc.c
diff --git
a/src/vppinfra/pmalloc.c
b/src/vppinfra/pmalloc.c
index
cca8039
..
e0f3f3a
100644
(file)
--- a/
src/vppinfra/pmalloc.c
+++ b/
src/vppinfra/pmalloc.c
@@
-63,9
+63,8
@@
pmalloc_validate_numa_node (u32 * numa_node)
int
clib_pmalloc_init (clib_pmalloc_main_t * pm, uword base_addr, uword size)
{
int
clib_pmalloc_init (clib_pmalloc_main_t * pm, uword base_addr, uword size)
{
- uword
off
, pagesize;
+ uword
base
, pagesize;
u64 *pt = 0;
u64 *pt = 0;
- int mmap_flags;
ASSERT (pm->error == 0);
ASSERT (pm->error == 0);
@@
-84,32
+83,16
@@
clib_pmalloc_init (clib_pmalloc_main_t * pm, uword base_addr, uword size)
pm->max_pages = size >> pm->def_log2_page_sz;
pm->max_pages = size >> pm->def_log2_page_sz;
- /* reserve VA space for future growth */
- mmap_flags = MAP_PRIVATE | MAP_ANONYMOUS;
+ base = clib_mem_vm_reserve (base_addr, size, pm->def_log2_page_sz);
- if (base_addr)
- mmap_flags |= MAP_FIXED;
-
- pm->base = mmap (uword_to_pointer (base_addr, void *), size + pagesize,
- PROT_NONE, mmap_flags, -1, 0);
-
- if (pm->base == MAP_FAILED)
+ if (base == ~0)
{
{
- pm->error = clib_error_return_unix (0, "failed to reserve %u pages");
+ pm->error = clib_error_return (0, "failed to reserve %u pages",
+ pm->max_pages);
return -1;
}
return -1;
}
- off = round_pow2 (pointer_to_uword (pm->base), pagesize) -
- pointer_to_uword (pm->base);
-
- /* trim start and end of reservation to be page aligned */
- if (off)
- {
- munmap (pm->base, off);
- pm->base += off;
- }
-
- munmap (pm->base + ((uword) pm->max_pages * pagesize), pagesize - off);
+ pm->base = uword_to_pointer (base, void *);
return 0;
}
return 0;
}