Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
various cosmetics and comments improvements
authorMartin Quinson <martin.quinson@loria.fr>
Thu, 2 Feb 2012 14:41:34 +0000 (15:41 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Thu, 2 Feb 2012 14:41:34 +0000 (15:41 +0100)
src/xbt/mmalloc/mm_module.c
src/xbt/mmalloc/mmalloc.c
src/xbt/mmalloc/mmemalign.c
src/xbt/mmalloc/mmprivate.h

index 8ec8e73..973c1ae 100644 (file)
@@ -143,7 +143,8 @@ xbt_mheap_t xbt_mheap_new(int fd, void *baseaddr)
     }
   }
 
     }
   }
 
-  /* If the user provided NULL BASEADDR then fail */
+  /* NULL is not a valid baseaddr as we cannot map anything there.
+     C'mon, user. Think! */
   if (baseaddr == NULL)
     return (NULL);
 
   if (baseaddr == NULL)
     return (NULL);
 
index a5a0192..23db293 100644 (file)
 
 /* Prototypes for local functions */
 
 
 /* Prototypes for local functions */
 
-static int initialize(struct mdesc *mdp);
-static void *morecore(struct mdesc *mdp, size_t size);
-static void *align(struct mdesc *mdp, size_t size);
-
-/* Aligned allocation.  */
+static int initialize(xbt_mheap_t mdp);
+static void *register_morecore(xbt_mheap_t mdp, size_t size);
+static void *align(xbt_mheap_t mdp, size_t size);
 
 
+/* Allocation aligned on block boundary */
 static void *align(struct mdesc *mdp, size_t size)
 {
   void *result;
   unsigned long int adj;
 
   result = mmorecore(mdp, size);
 static void *align(struct mdesc *mdp, size_t size)
 {
   void *result;
   unsigned long int adj;
 
   result = mmorecore(mdp, size);
+
+  /* if this reservation does not fill up the last block of our resa,
+   * complete the reservation by also asking for the full lastest block.
+   *
+   * Also, the returned block is aligned to the end of block (but I've
+   * no fucking idea of why, actually -- http://abstrusegoose.com/432).
+   */
   adj = RESIDUAL(result, BLOCKSIZE);
   if (adj != 0) {
     adj = BLOCKSIZE - adj;
   adj = RESIDUAL(result, BLOCKSIZE);
   if (adj != 0) {
     adj = BLOCKSIZE - adj;
@@ -37,9 +43,9 @@ static void *align(struct mdesc *mdp, size_t size)
   return (result);
 }
 
   return (result);
 }
 
-/* Set everything up and remember that we have.  */
-
-static int initialize(struct mdesc *mdp)
+/* Finish the initialization of the mheap. If we want to inline it
+ * properly, we need to make the align function publicly visible, too  */
+static int initialize(xbt_mheap_t mdp)
 {
   mdp->heapsize = HEAP / BLOCKSIZE;
   mdp->heapinfo = (malloc_info *)
 {
   mdp->heapsize = HEAP / BLOCKSIZE;
   mdp->heapinfo = (malloc_info *)
@@ -56,10 +62,9 @@ static int initialize(struct mdesc *mdp)
   return (1);
 }
 
   return (1);
 }
 
-/* Get neatly aligned memory, initializing or
-   growing the heap info table as necessary. */
-
-static void *morecore(struct mdesc *mdp, size_t size)
+/* Get neatly aligned memory from the low level layers, and register it
+ * into the heap info table as necessary. */
+static void *register_morecore(struct mdesc *mdp, size_t size)
 {
   void *result;
   malloc_info *newinfo, *oldinfo;
 {
   void *result;
   malloc_info *newinfo, *oldinfo;
@@ -199,7 +204,7 @@ void *mmalloc(xbt_mheap_t mdp, size_t size)
         if (mdp->heaplimit != 0 &&
             block + lastblocks == mdp->heaplimit &&
             mmorecore(mdp, 0) == ADDRESS(block + lastblocks) &&
         if (mdp->heaplimit != 0 &&
             block + lastblocks == mdp->heaplimit &&
             mmorecore(mdp, 0) == ADDRESS(block + lastblocks) &&
-            (morecore(mdp, (blocks - lastblocks) * BLOCKSIZE)) != NULL) {
+            (register_morecore(mdp, (blocks - lastblocks) * BLOCKSIZE)) != NULL) {
           /* Which block we are extending (the `final free
              block' referred to above) might have changed, if
              it got combined with a freed info table.  */
           /* Which block we are extending (the `final free
              block' referred to above) might have changed, if
              it got combined with a freed info table.  */
@@ -208,7 +213,7 @@ void *mmalloc(xbt_mheap_t mdp, size_t size)
           mdp->heapinfo[block].free.size += (blocks - lastblocks);
           continue;
         }
           mdp->heapinfo[block].free.size += (blocks - lastblocks);
           continue;
         }
-        result = morecore(mdp, blocks * BLOCKSIZE);
+        result = register_morecore(mdp, blocks * BLOCKSIZE);
         if (result == NULL) {
           return (NULL);
         }
         if (result == NULL) {
           return (NULL);
         }
index 93ca53a..cf0cef7 100644 (file)
@@ -48,10 +48,9 @@ static size_t cache_pagesize;
 
 void *mvalloc(xbt_mheap_t mdp, size_t size)
 {
 
 void *mvalloc(xbt_mheap_t mdp, size_t size)
 {
-  if (cache_pagesize == 0) {
+  if (cache_pagesize == 0)
     cache_pagesize = getpagesize();
     cache_pagesize = getpagesize();
-  }
 
 
-  return (mmemalign(mdp, cache_pagesize, size));
+  return mmemalign(mdp, cache_pagesize, size);
 }
 
 }
 
index 05cdf9a..4171788 100644 (file)
@@ -112,7 +112,6 @@ struct alignlist {
 };
 
 /* Doubly linked lists of free fragments.  */
 };
 
 /* Doubly linked lists of free fragments.  */
-
 struct list {
   struct list *next;
   struct list *prev;
 struct list {
   struct list *next;
   struct list *prev;