A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of https://framagit.org/simgrid/simgrid
[simgrid.git]
/
src
/
smpi
/
internals
/
smpi_shared.cpp
diff --git
a/src/smpi/internals/smpi_shared.cpp
b/src/smpi/internals/smpi_shared.cpp
index
f4ccaaa
..
642eff5
100644
(file)
--- a/
src/smpi/internals/smpi_shared.cpp
+++ b/
src/smpi/internals/smpi_shared.cpp
@@
-139,6
+139,8
@@
static void* shm_map(int fd, size_t size, shared_data_key_type* data) {
snprintf(loc, PTR_STRLEN, "%p", mem);
meta.size = size;
meta.data = data;
snprintf(loc, PTR_STRLEN, "%p", mem);
meta.size = size;
meta.data = data;
+ meta.allocated_ptr = mem;
+ meta.allocated_size = size;
allocs_metadata[mem] = meta;
XBT_DEBUG("MMAP %zu to %p", size, mem);
return mem;
allocs_metadata[mem] = meta;
XBT_DEBUG("MMAP %zu to %p", size, mem);
return mem;
@@
-178,11
+180,11
@@
static void *smpi_shared_malloc_local(size_t size, const char *file, int line)
}
// Align functions, from http://stackoverflow.com/questions/4840410/how-to-align-a-pointer-in-c
}
// Align functions, from http://stackoverflow.com/questions/4840410/how-to-align-a-pointer-in-c
-#define PAGE_SIZE 0x1000
#define ALIGN_UP(n, align) (((n) + (align)-1) & -(align))
#define ALIGN_DOWN(n, align) ((n) & -(align))
#define ALIGN_UP(n, align) (((n) + (align)-1) & -(align))
#define ALIGN_DOWN(n, align) ((n) & -(align))
-#define HUGE_PAGE_SIZE 1<<21
+constexpr unsigned PAGE_SIZE = 0x1000;
+constexpr unsigned HUGE_PAGE_SIZE = 1U << 21;
/* Similar to smpi_shared_malloc, but only sharing the blocks described by shared_block_offsets.
* This array contains the offsets (in bytes) of the block to share.
/* Similar to smpi_shared_malloc, but only sharing the blocks described by shared_block_offsets.
* This array contains the offsets (in bytes) of the block to share.
@@
-436,9
+438,9
@@
void smpi_shared_free(void *ptr)
close(data->fd);
allocs.erase(allocs.find(meta->second.data->first));
allocs_metadata.erase(ptr);
close(data->fd);
allocs.erase(allocs.find(meta->second.data->first));
allocs_metadata.erase(ptr);
- XBT_DEBUG("Shared free - with removal - of %p", ptr);
+ XBT_DEBUG("Shared free -
Local -
with removal - of %p", ptr);
} else {
} else {
- XBT_DEBUG("Shared free - no removal - of %p, count = %d", ptr, data->count);
+ XBT_DEBUG("Shared free -
Local -
no removal - of %p, count = %d", ptr, data->count);
}
} else if (smpi_cfg_shared_malloc == SharedMallocType::GLOBAL) {
}
} else if (smpi_cfg_shared_malloc == SharedMallocType::GLOBAL) {
@@
-448,7
+450,7
@@
void smpi_shared_free(void *ptr)
if(meta->second.data->second.count==0)
delete meta->second.data;
}
if(meta->second.data->second.count==0)
delete meta->second.data;
}
-
+ XBT_DEBUG("Shared free - Global - of %p", ptr);
munmap(ptr, meta->second.size);
} else {
XBT_DEBUG("Classic deallocation of %p", ptr);
munmap(ptr, meta->second.size);
} else {
XBT_DEBUG("Classic deallocation of %p", ptr);