int
clib_pmalloc_init (clib_pmalloc_main_t * pm, uword size)
{
- struct stat st;
uword off, pagesize;
- int fd;
ASSERT (pm->error == 0);
- pm->log2_page_sz = 21;
- pm->error = clib_mem_create_hugetlb_fd ("detect_hugepage_size", &fd);
-
- if (pm->error)
- return -1;
-
- if (fd != -1)
- {
- if (fstat (fd, &st) == -1)
- pm->log2_page_sz = min_log2 (st.st_blksize);
- close (fd);
- }
-
- pagesize = 1ULL << pm->log2_page_sz;
+ pagesize = clib_mem_get_default_hugepage_size ();
+ pm->log2_page_sz = min_log2 (pagesize);
size = size ? size : ((u64) DEFAULT_RESERVED_MB) << 20;
size = round_pow2 (size, pagesize);
goto error;
}
- memset (va, 0, n_pages << pm->log2_page_sz);
+ clib_memset (va, 0, n_pages << pm->log2_page_sz);
sys_page_size = sysconf (_SC_PAGESIZE);
pagemap_fd = open ((char *) "/proc/self/pagemap", O_RDONLY);
{
clib_pmalloc_arena_t *a;
clib_pmalloc_page_t *pp;
- u32 n_pages = round_pow2 (size, 1 << pm->log2_page_sz) >> pm->log2_page_sz;
+ u32 n_pages = round_pow2 (size, 1ULL << pm->log2_page_sz) >>
+ pm->log2_page_sz;
if (n_pages + vec_len (pm->pages) > pm->max_pages)
return 0;