- if (smpi_shared_malloc_bogusfile == -1) {
- /* Create a fd to a new file on disk, make it smpi_shared_malloc_blocksize big, and unlink it.
- * It still exists in memory but not in the file system (thus it cannot be leaked). */
- smpi_shared_malloc_blocksize = static_cast<unsigned long>(xbt_cfg_get_double("smpi/shared-malloc-blocksize"));
- XBT_DEBUG("global shared allocation. Blocksize %lu", smpi_shared_malloc_blocksize);
- char* name = xbt_strdup("/tmp/simgrid-shmalloc-XXXXXX");
+ if (use_huge_page && smpi_shared_malloc_bogusfile_huge_page == -1) {
+ char *array[] = {huge_page_mount_point, "simgrid-shmalloc-XXXXXX", nullptr};
+ char *huge_page_filename = xbt_str_join_array(array, "/");
+ smpi_shared_malloc_bogusfile_huge_page = mkstemp(huge_page_filename);
+ XBT_DEBUG("bogusfile_huge_page: %s\n", huge_page_filename);
+ unlink(huge_page_filename);
+ xbt_free(huge_page_filename);
+ }
+ if(smpi_shared_malloc_bogusfile == -1) {
+ char *name = xbt_strdup("/tmp/simgrid-shmalloc-XXXXXX");