瀏覽代碼

Support for statistics in operations for bitmap-organized raw blocks

Ioannis Koutras 12 年之前
父節點
當前提交
1ed21e0d87
共有 2 個文件被更改,包括 17 次插入0 次删除
  1. 7 0
      src/bitmap/bitmap_free.c
  2. 10 0
      src/bitmap/bitmap_malloc.c

+ 7 - 0
src/bitmap/bitmap_free.c

@@ -51,6 +51,13 @@ void bitmap_free(raw_block_header_t *raw_block, void *ptr) {
 
     cells_used = chunk_header->num_of_cells;
 
+#ifdef WITH_STATS
+    raw_block->dmm_stats.total_mem_allocated -= cells_used *
+        rb_header->bytes_per_cell;
+    raw_block->dmm_stats.live_objects--;
+    raw_block->dmm_stats.num_free++;
+#endif /* WITH_STATS */
+
 #ifndef REQUEST_SIZE_INFO
     TRACE_1("dmmlib - free - free'ing %zu bytes from bitmap raw block %p\n",
             cells_used * rb_header->bytes_per_cell, (void *)raw_block);

+ 10 - 0
src/bitmap/bitmap_malloc.c

@@ -111,6 +111,16 @@ void * bitmap_malloc(raw_block_header_t *raw_block, size_t req_size) {
 
             ret = (void *)((char *)chunk_address + CHUNK_HDR_SIZE);
 
+#ifdef WITH_STATS
+            raw_block->dmm_stats.total_mem_requested += req_size - CHUNK_HDR_SIZE;
+            raw_block->dmm_stats.live_objects++;
+            raw_block->dmm_stats.num_malloc++;
+#ifdef REQUEST_SIZE_INFO
+            raw_block->dmm_stats.total_mem_allocated +=
+                cells * rb_header->bytes_per_cell;
+#endif /* REQUEST_SIZE_INFO */
+#endif /* WITH_STATS */
+
             TRACE_1("dmmlib - malloc - allocated %zu bytes for a memory request"
                     " of %zu bytes at bitmap raw block %p...\n",
                     cells * rb_header->bytes_per_cell,