size_t bytes_free; /* Byte total of chunks in the free list. */
};
+typedef struct s_heap_area{
+ int block;
+ int fragment;
+}s_heap_area_t, *heap_area_t;
+
+typedef struct s_heap_area_pair{
+ int block1;
+ int fragment1;
+ int block2;
+ int fragment2;
+}s_heap_area_pair_t, *heap_area_pair_t;
+
/* Data structure giving per-block information.
*
* There is one such structure in the mdp->heapinfo array per block used in that heap,
size_t first; /* First free fragment of the block. */
unsigned short frag_size[MAX_FRAGMENT_PER_BLOCK];
void *bt[MAX_FRAGMENT_PER_BLOCK][XBT_BACKTRACE_SIZE]; /* Where it was malloced (or realloced lastly) */
- int equal_to[MAX_FRAGMENT_PER_BLOCK];
+ heap_area_t equal_to[MAX_FRAGMENT_PER_BLOCK];
} busy_frag;
struct {
size_t size; /* Size (in blocks) of a large cluster. */
size_t busy_size; /* Actually used space, in bytes */
void *bt[XBT_BACKTRACE_SIZE]; /* Where it was malloced (or realloced lastly) */
int bt_size;
- int equal_to;
+ heap_area_t equal_to;
} busy_block;
/* Heap information for a free block (that may be the first of a free cluster). */
struct {