increasing mempool limit and adding one more check
authorNikhil Jain <nikhil@illinois.edu>
Tue, 13 Mar 2012 16:08:55 +0000 (11:08 -0500)
committerNikhil Jain <nikhil@illinois.edu>
Tue, 13 Mar 2012 16:08:55 +0000 (11:08 -0500)
src/arch/util/mempool.c
src/arch/util/mempool.h

index 298449812c46c89125dc65ac5987e61e4e26e393..790a572dc6f8e8a57ce671f51ec335bd319c1199 100644 (file)
@@ -33,9 +33,7 @@ Heavily modified by Nikhil Jain 11/28/2011
 int cutOffPoints[] = {64,128,256,512,1024,2048,4096, 8192,16384,32768,
                       65536,131072,262144,524288,1048576,2097152,4194304,
                       8388608,16777216,33554432,67108864,134217728,268435456,
-                      536870912};
-
-
+                      536870912,1073741824};
 
 INLINE_KEYWORD int which_pow2(size_t size)
 {
@@ -72,6 +70,12 @@ INLINE_KEYWORD void fillblock(mempool_type *mptr,block_header *block_head,int po
   if(left < cutOffPoints[power]) {
     power--;
   }
+    
+  if(power == cutOffNum) {
+    CmiAbort("Mempool-requested slot is more than what mempool can provide as\
+    one chunk, increase cutOffNum and cutoffPoints in mempool\n");
+  }
+
 #if MEMPOOL_DEBUG
   CmiPrintf("Left is %d, Max power obtained is %d\n",left,power);
 #endif
@@ -307,7 +311,7 @@ void*  mempool_malloc(mempool_type *mptr, int size, int expand)
         CmiPrintf("Mempool-Did not get memory while expanding\n");
         return NULL;
       }
-
+    
       mptr->size += expand_size;
       current = (block_header*)pool; 
       tail->block_next = ((char*)current-(char*)mptr);
index 4aaa9d059d5b35080ea24fe1fe9b5f491ea3fd3d..e1c8a157216f922519d5c6e56cc6c8bd6f6da1a5 100644 (file)
@@ -18,7 +18,7 @@ typedef CmiInt8   mem_handle_t;
 typedef void * (* mempool_newblockfn)(size_t *size, mem_handle_t *mem_hndl, int expand_flag);
 typedef void (* mempool_freeblock)(void *ptr, mem_handle_t mem_hndl);
 
-#define cutOffNum 24 
+#define cutOffNum 25 
 
 struct block_header;
 struct mempool_type;