}
};
-typedef struct {
+struct shared_data_t {
int fd = -1;
int count = 0;
-} shared_data_t;
+};
std::unordered_map<smpi_source_location, shared_data_t, std::hash<std::string>> allocs;
typedef decltype(allocs)::value_type shared_data_key_type;
-typedef struct {
+struct shared_metadata_t {
size_t size;
size_t allocated_size;
void *allocated_ptr;
std::vector<std::pair<size_t, size_t>> private_blocks;
shared_data_key_type* data;
-} shared_metadata_t;
+};
std::map<void*, shared_metadata_t> allocs_metadata;
std::map<std::string, void*> calls;
* We cannot use a same file for the two type of calls, since the first one needs to be
* opened in a hugetlbfs mount point whereas the second needs to be a "classical" file. */
if(use_huge_page && smpi_shared_malloc_bogusfile_huge_page == -1) {
- const char *const array[] = {huge_page_mount_point, "simgrid-shmalloc-XXXXXX", nullptr};
- char *huge_page_filename = xbt_str_join_array(array, "/");
+ char* huge_page_filename = bprintf("%s/simgrid-shmalloc-XXXXXX", huge_page_mount_point);
smpi_shared_malloc_bogusfile_huge_page = mkstemp(huge_page_filename);
XBT_DEBUG("bogusfile_huge_page: %s\n", huge_page_filename);
unlink(huge_page_filename);