+ clib_mem_heap_t *heap, *oldheap;
+
+ log2_page_size = clib_mem_get_log2_page_size ();
+ if (log2_page_size == 0)
+ {
+ clib_unix_warning ("cannot determine page size");
+ return SSVM_API_ERROR_CREATE_FAILURE;
+ }
+
+ page_size = 1ULL << log2_page_size;
+ rnd_size = clib_max (ssvm->ssvm_size + (page_size - 1), ssvm->ssvm_size);
+ rnd_size &= ~(page_size - 1);
+
+ sh = clib_mem_vm_map (0, rnd_size + page_size, log2_page_size,
+ (char *) ssvm->name);
+ if (sh == CLIB_MEM_VM_MAP_FAILED)
+ {
+ clib_unix_warning ("private map failed");
+ return SSVM_API_ERROR_CREATE_FAILURE;
+ }