xbt_mheap_destroy_no_free(__mmalloc_default_mdp);
}
-size_t mmalloc_get_chunks_used(xbt_mheap_t heap){
- return ((struct mdesc *)heap)->heapstats.chunks_used;
-}
-
-void remove_ignore_heap(void *address, size_t size){
+size_t mmalloc_get_bytes_used(xbt_mheap_t heap){
+ int i = 0, j = 0;
+ int bytes = 0;
- unsigned int cursor = 0;
- int start = 0;
- int end = xbt_dynar_length(mc_heap_comparison_ignore) - 1;
- mc_heap_ignore_region_t region;
- int ignore_found = 0;
-
- while(start <= end){
- cursor = (start + end) / 2;
- region = (mc_heap_ignore_region_t)xbt_dynar_get_as(mc_heap_comparison_ignore, cursor, mc_heap_ignore_region_t);
- if(region->address == address){
- ignore_found = 1;
- break;
- }
- if(region->address < address)
- start = cursor + 1;
- if(region->address > address){
- if((char * )region->address <= ((char *)address + size)){
- ignore_found = 1;
- break;
- }else
- end = cursor - 1;
+ while(i<=((struct mdesc *)heap)->heaplimit){
+ if(((struct mdesc *)heap)->heapinfo[i].type == 0){
+ if(((struct mdesc *)heap)->heapinfo[i].busy_block.busy_size > 0)
+ bytes += ((struct mdesc *)heap)->heapinfo[i].busy_block.busy_size;
+
+ }else if(((struct mdesc *)heap)->heapinfo[i].type > 0){
+ for(j=0; j < (size_t) (BLOCKSIZE >> ((struct mdesc *)heap)->heapinfo[i].type); j++){
+ if(((struct mdesc *)heap)->heapinfo[i].busy_frag.frag_size[j] > 0)
+ bytes += ((struct mdesc *)heap)->heapinfo[i].busy_frag.frag_size[j];
+ }
}
+ i++;
}
-
- if(ignore_found == 1){
- xbt_dynar_remove_at(mc_heap_comparison_ignore, cursor, NULL);
- remove_ignore_heap(address, size);
- }
+ return bytes;
+}
+
+ssize_t mmalloc_get_busy_size(xbt_mheap_t heap, void *ptr){
+
+ ssize_t block = ((char*)ptr - (char*)(heap->heapbase)) / BLOCKSIZE + 1;
+ if(heap->heapinfo[block].type == -1)
+ return -1;
+ else if(heap->heapinfo[block].type == 0)
+ return heap->heapinfo[block].busy_block.busy_size;
+ else{
+ ssize_t frag = ((uintptr_t) (ADDR2UINT (ptr) % (BLOCKSIZE))) >> heap->heapinfo[block].type;
+ return heap->heapinfo[block].busy_frag.frag_size[frag];
+ }
+
}