/kernel/trunk/generic/include/mm/buddy.h |
---|
55,7 → 55,7 |
extern link_t *buddy_system_alloc(buddy_system_t *b, __u8 i); |
extern bool buddy_system_can_alloc(buddy_system_t *b, __u8 order); |
extern void buddy_system_free(buddy_system_t *b, link_t *block); |
extern void buddy_system_structure_print(buddy_system_t *b); |
extern void buddy_system_structure_print(buddy_system_t *b, size_t elem_size); |
#endif |
/kernel/trunk/generic/src/mm/buddy.c |
---|
238,14 → 238,14 |
* @param b Pointer to buddy system |
* @param es Element size |
*/ |
void buddy_system_structure_print(buddy_system_t *b) { |
void buddy_system_structure_print(buddy_system_t *b, size_t elem_size) { |
index_t i; |
count_t cnt, elem_count = 0, block_count = 0; |
link_t * cur; |
printf("Order\tStatistics\n"); |
printf("-----\t--------------------------------------\n"); |
printf("Order\tBlocks\tSize \tBlock size\tElems per block\n"); |
printf("-----\t------\t--------\t----------\t---------------\n"); |
for (i=0;i < b->max_order; i++) { |
cnt = 0; |
253,12 → 253,12 |
for (cur = b->order[i].next; cur != &b->order[i]; cur = cur->next) cnt++; |
} |
printf("#%d:\t%d blocks available (%d elements per block)\n", i, cnt, 1 << i); |
printf("#%d\t%d\t%d kb\t\t%d kb\t\t%d\n", i, cnt, (cnt * (1 << i) * elem_size) >> 10, ((1 << i) * elem_size) >> 10, 1 << i); |
block_count += cnt; |
elem_count += (1 << i) * cnt; |
} |
printf("-----\t--------------------------------------\n"); |
printf("-----\t------\t--------\t----------\t---------------\n"); |
printf("Buddy system contains %d elements (%d blocks)\n" , elem_count, block_count); |
} |
/kernel/trunk/generic/src/mm/frame.c |
---|
489,14 → 489,13 |
void zone_print_list(void) { |
zone_t *zone = NULL; |
link_t *cur; |
index_t i = 0; |
spinlock_lock(&zone_head_lock); |
printf("No.\tBase address\tFree Frames\tBusy Frames\n"); |
printf("---\t------------\t-----------\t-----------\n"); |
printf("Base address\tFree Frames\tBusy Frames\n"); |
printf("------------\t-----------\t-----------\n"); |
for (cur = zone_head.next; cur != &zone_head; cur = cur->next) { |
zone = list_get_instance(cur, zone_t, link); |
spinlock_lock(&zone->lock); |
printf("%d\t%L\t%d\t\t%d\n",i++,zone->base, zone->free_count, zone->busy_count); |
printf("%L\t%d\t\t%d\n",zone->base, zone->free_count, zone->busy_count); |
} |
spinlock_unlock(&zone_head_lock); |
536,9 → 535,8 |
printf("Available space: %d (%d kbytes)\n", zone->free_count, (zone->free_count * FRAME_SIZE) >> 10); |
printf("\nBuddy allocator structures:\n\n"); |
buddy_system_structure_print(zone->buddy_system); |
buddy_system_structure_print(zone->buddy_system, FRAME_SIZE); |
spinlock_unlock(&zone->lock); |
spinlock_unlock(&zone_head_lock); |