Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
there were no difference between __mmalloc_free and mfree anymore; merge them
[simgrid.git] / src / xbt / mmalloc / mmprivate.h
index e886092..8352e13 100644 (file)
@@ -95,6 +95,11 @@ const char *xbt_thread_self_name(void);
  *    When looking for free blocks, we traverse the mdp->heapinfo looking
  *    for a cluster of free blocks that would be large enough.
  *
+ *    The size of the cluster is only to be trusted in the first block of the cluster.
+ *    If the cluster results of the fusion of several clusters, the previously first
+ *    block of their cluster will have partial data. The only information kept consistent over
+ *    all blocks of the clusters is their type (== -1).
+ *
  * Note that there is no way to determine if the block is free or busy by exploring
  * this structure only. It wasn't intended to be crawled for comparison and we should fix it (TODO).
  *
@@ -103,9 +108,8 @@ const char *xbt_thread_self_name(void);
  * I retrieve the first block of my cluster.
  *
  * TODO:
- *  - add an indication of the requested size in the busy.block structure
- *  - add the same for each fragments
- *  - make room to store the backtrace of where the fragment were malloced, too.
+ *  - add an indication of the requested size in each fragment, similarly to busy_block.busy_size
+ *  - make room to store the backtrace of where the blocks and fragment were malloced, too.
  */
 typedef struct {
        int type; /*  0: busy large block
@@ -119,7 +123,7 @@ typedef struct {
                } busy_frag;
                struct {
                        size_t size; /* Size (in blocks) of a large cluster.  */
-                       size_t busy_size;
+                       size_t busy_size; /* Actually used space, in bytes */
                } busy_block;
                /* Heap information for a free block (that may be the first of a free cluster).  */
                struct {
@@ -179,7 +183,7 @@ struct mdesc {
        size_t heaplimit;
 
        /* Block information table.
-     Allocated with malign/__mmalloc_free (not mmalloc/mfree).  */
+     Allocated with malign/mfree (not mmalloc/mfree).  */
        /* Table indexed by block number giving per-block information.  */
        malloc_info *heapinfo;
 
@@ -221,10 +225,6 @@ void mmalloc_display_info(void *h);
 #define MMALLOC_ANONYMOUS (1 << 1)      /* Use anonymous mapping */
 #define MMALLOC_INITIALIZED    (1 << 2)        /* Initialized mmalloc */
 
-/* Internal version of `mfree' used in `morecore'. */
-
-extern void __mmalloc_free(struct mdesc *mdp, void *ptr);
-
 /* A default malloc descriptor for the single sbrk() managed region. */
 
 extern struct mdesc *__mmalloc_default_mdp;