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
Check if MAP_ANONYMOUS is defined after including sys/mman.h.
[simgrid.git]
/
src
/
xbt
/
mmalloc
/
mmalloc.c
diff --git
a/src/xbt/mmalloc/mmalloc.c
b/src/xbt/mmalloc/mmalloc.c
index
726842f
..
7376ca6
100644
(file)
--- a/
src/xbt/mmalloc/mmalloc.c
+++ b/
src/xbt/mmalloc/mmalloc.c
@@
-1,15
+1,16
@@
-/* Memory allocator `malloc'.
- Copyright 1990, 1991, 1992 Free Software Foundation
+/* Memory allocator `malloc'. */
- Written May 1989 by Mike Haertel.
- Heavily modified Mar 1992 by Fred Fish for mmap'd version. */
-
-/* Copyright (c) 2010. The SimGrid Team.
+/* Copyright (c) 2010-2014. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
+/* Copyright 1990, 1991, 1992 Free Software Foundation
+
+ Written May 1989 by Mike Haertel.
+ Heavily modified Mar 1992 by Fred Fish for mmap'd version. */
+
#include <string.h> /* Prototypes for memcpy, memmove, memset, etc */
#include <stdio.h>
#include "mmprivate.h"
#include <string.h> /* Prototypes for memcpy, memmove, memset, etc */
#include <stdio.h>
#include "mmprivate.h"
@@
-117,13
+118,13
@@
static void *register_morecore(struct mdesc *mdp, size_t size)
/* mark the space previously occupied by the block info as free by first marking it
* as occupied in the regular way, and then freing it */
/* mark the space previously occupied by the block info as free by first marking it
* as occupied in the regular way, and then freing it */
- for (it=0; it<BLOCKIFY(mdp->heapsize * sizeof(malloc_info)); it++)
+ for (it=0; it<BLOCKIFY(mdp->heapsize * sizeof(malloc_info)); it++)
{
newinfo[BLOCK(oldinfo)+it].type = 0;
newinfo[BLOCK(oldinfo)+it].type = 0;
+ newinfo[BLOCK(oldinfo)+it].busy_block.ignore = 0;
+ }
newinfo[BLOCK(oldinfo)].busy_block.size = BLOCKIFY(mdp->heapsize * sizeof(malloc_info));
newinfo[BLOCK(oldinfo)].busy_block.busy_size = size;
newinfo[BLOCK(oldinfo)].busy_block.size = BLOCKIFY(mdp->heapsize * sizeof(malloc_info));
newinfo[BLOCK(oldinfo)].busy_block.busy_size = size;
- newinfo[BLOCK(oldinfo)].busy_block.ignore = 0;
- //newinfo[BLOCK(oldinfo)].busy_block.bt_size = 0;// FIXME setup the backtrace
mfree(mdp, (void *) oldinfo);
mdp->heapsize = newsize;
}
mfree(mdp, (void *) oldinfo);
mdp->heapsize = newsize;
}
@@
-204,6
+205,7
@@
void *mmalloc_no_memset(xbt_mheap_t mdp, size_t size)
candidate_info->busy_frag.frag_size[candidate_frag] = requested_size;
candidate_info->busy_frag.ignore[candidate_frag] = 0;
//xbt_backtrace_no_malloc(candidate_info->busy_frag.bt[candidate_frag],XBT_BACKTRACE_SIZE);
candidate_info->busy_frag.frag_size[candidate_frag] = requested_size;
candidate_info->busy_frag.ignore[candidate_frag] = 0;
//xbt_backtrace_no_malloc(candidate_info->busy_frag.bt[candidate_frag],XBT_BACKTRACE_SIZE);
+ //xbt_libunwind_backtrace(candidate_info->busy_frag.bt[candidate_frag],XBT_BACKTRACE_SIZE);
/* Update the statistics. */
mdp -> heapstats.chunks_used++;
/* Update the statistics. */
mdp -> heapstats.chunks_used++;
@@
-234,6
+236,7
@@
void *mmalloc_no_memset(xbt_mheap_t mdp, size_t size)
mdp->heapinfo[block].busy_frag.frag_size[0] = requested_size;
mdp->heapinfo[block].busy_frag.ignore[0] = 0;
//xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_frag.bt[0],XBT_BACKTRACE_SIZE);
mdp->heapinfo[block].busy_frag.frag_size[0] = requested_size;
mdp->heapinfo[block].busy_frag.ignore[0] = 0;
//xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_frag.bt[0],XBT_BACKTRACE_SIZE);
+ //xbt_libunwind_backtrace(mdp->heapinfo[block].busy_frag.bt[0],XBT_BACKTRACE_SIZE);
/* update stats */
mdp -> heapstats.chunks_free += (BLOCKSIZE >> log) - 1;
/* update stats */
mdp -> heapstats.chunks_free += (BLOCKSIZE >> log) - 1;
@@
-277,11
+280,13
@@
void *mmalloc_no_memset(xbt_mheap_t mdp, size_t size)
block = BLOCK(result);
for (it=0;it<blocks;it++){
mdp->heapinfo[block+it].type = 0;
block = BLOCK(result);
for (it=0;it<blocks;it++){
mdp->heapinfo[block+it].type = 0;
+ mdp->heapinfo[block+it].busy_block.busy_size = 0;
+ mdp->heapinfo[block+it].busy_block.ignore = 0;
}
mdp->heapinfo[block].busy_block.size = blocks;
mdp->heapinfo[block].busy_block.busy_size = requested_size;
//mdp->heapinfo[block].busy_block.bt_size=xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE);
}
mdp->heapinfo[block].busy_block.size = blocks;
mdp->heapinfo[block].busy_block.busy_size = requested_size;
//mdp->heapinfo[block].busy_block.bt_size=xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE);
-
mdp->heapinfo[block].busy_block.ignore = 0
;
+
//mdp->heapinfo[block].busy_block.bt_size = xbt_libunwind_backtrace(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE)
;
mdp -> heapstats.chunks_used++;
mdp -> heapstats.bytes_used += blocks * BLOCKSIZE;
mdp -> heapstats.chunks_used++;
mdp -> heapstats.bytes_used += blocks * BLOCKSIZE;
@@
-316,13
+321,14
@@
void *mmalloc_no_memset(xbt_mheap_t mdp, size_t size)
for (it=0;it<blocks;it++){
mdp->heapinfo[block+it].type = 0;
for (it=0;it<blocks;it++){
mdp->heapinfo[block+it].type = 0;
+ mdp->heapinfo[block+it].busy_block.busy_size = 0;
+ mdp->heapinfo[block+it].busy_block.ignore = 0;
}
mdp->heapinfo[block].busy_block.size = blocks;
}
mdp->heapinfo[block].busy_block.size = blocks;
- mdp->heapinfo[block].busy_block.busy_size = requested_size;
- mdp->heapinfo[block].busy_block.ignore = 0;
- //mdp->heapinfo[block].busy_block.bt_size = 0;
+ mdp->heapinfo[block].busy_block.busy_size = requested_size;
//mdp->heapinfo[block].busy_block.bt_size = xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE);
//mdp->heapinfo[block].busy_block.bt_size = xbt_backtrace_no_malloc(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE);
-
+ //mdp->heapinfo[block].busy_block.bt_size = xbt_libunwind_backtrace(mdp->heapinfo[block].busy_block.bt,XBT_BACKTRACE_SIZE);
+
mdp -> heapstats.chunks_used++;
mdp -> heapstats.bytes_used += blocks * BLOCKSIZE;
mdp -> heapstats.bytes_free -= blocks * BLOCKSIZE;
mdp -> heapstats.chunks_used++;
mdp -> heapstats.bytes_used += blocks * BLOCKSIZE;
mdp -> heapstats.bytes_free -= blocks * BLOCKSIZE;