panic("[km_stat] The end of a free block enters another free block.");
if (p->ptr == km->loop_head) break;
}
- for (p = km->core_head; p != NULL; p = p->ptr)
- ++s->n_cores, s->capacity += p->size * sizeof(header_t);
+ for (p = km->core_head; p != NULL; p = p->ptr) {
+ size_t size = p->size * sizeof(header_t);
+ ++s->n_cores;
+ s->capacity += size;
+ s->largest = s->largest > size? s->largest : size;
+ }
}
#endif
typedef struct {
- size_t capacity, available, n_blocks, n_cores;
+ size_t capacity, available, n_blocks, n_cores, largest;
} km_stat_t;
void *kmalloc(void *km, size_t size);