main() { #else void memory_stress(void) { #endif size_t i; int idx; DEBUG_MSG( "Size of umm_heap is %d\n", sizeof(umm_heap) ); DEBUG_MSG( "Size of header is %d\n", sizeof(umm_heap[0]) ); DEBUG_MSG( "Size of nblock is %d\n", sizeof(umm_heap[0].header.used.next) ); DEBUG_MSG( "Size of pblock is %d\n", sizeof(umm_heap[0].header.used.prev) ); DEBUG_MSG( "Size of nfree is %d\n", sizeof(umm_heap[0].body.free.next) ); DEBUG_MSG( "Size of pfree is %d\n", sizeof(umm_heap[0].body.free.prev) ); //memset( umm_heap, 0, sizeof(umm_heap) ); umm_info( NULL, 1 ); for( idx=0; idx<256; ++idx ) ptr_array[idx] = (void *)NULL; //for( idx=0; idx<6553500; ++idx ) { for( idx=0; idx<65535; ++idx ) { i = rand()%256; switch( rand() % 16 ) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: ptr_array[i] = umm_realloc(ptr_array[i], 0); break; case 7: case 8: ptr_array[i] = umm_realloc(ptr_array[i], rand()%40 ); break; case 9: case 10: case 11: case 12: ptr_array[i] = umm_realloc(ptr_array[i], rand()%100 ); break; case 13: case 14: ptr_array[i] = umm_realloc(ptr_array[i], rand()%200 ); break; default: ptr_array[i] = umm_realloc(ptr_array[i], rand()%400 ); break; } } umm_info( NULL, 1 ); }
/* * Wrapper for `umm_realloc()` which performs additional checks */ static void *wrap_realloc(void *ptr, size_t size) { free_blocks_check(); void *ret = umm_realloc(ptr, size); free_blocks_check(); return ret; }
void *pvPortRealloc(void *ptr, size_t size, const char *file, unsigned line) { (void) file; (void) line; return umm_realloc(ptr, size); }
void * ICACHE_RAM_ATTR realloc(void *mem, size_t newsize){ return umm_realloc(mem, ((newsize + 3) & ~((size_t)0x3))); }