diff --git a/Part3/09_memory/kernel/kernel.c b/Part3/09_memory/kernel/kernel.c index 25b71a8..8811af6 100644 --- a/Part3/09_memory/kernel/kernel.c +++ b/Part3/09_memory/kernel/kernel.c @@ -157,21 +157,22 @@ void print_holes(node* umem_head) { if (umem_head == NULL) { kprint("Holes list is Empty"); + return; } - + u32 hole_ids = 0; node *hole = NULL; while(umem_head != NULL) { if (umem_head->previous == NULL) { - if (umem_head->base_register != 0) { - hole = add_node( hole, 0x10000, umem_head->base_register-0x10000, true, 1); + if (umem_head->base_register-0x10000 != 0) { + hole = add_node( hole, 0x10000, umem_head->base_register-0x10000, true, ++hole_ids); } } else if (umem_head->next == NULL) { node *previous = umem_head->previous; - hole = add_node( hole, previous->base_register+previous->limit_register, -1, true, 1); + hole = add_node( hole, previous->base_register+previous->limit_register, -1, true, ++hole_ids); } else { node *previous = umem_head->previous; node *next = umem_head->next; - hole = add_node( hole, previous->base_register+previous->limit_register, next->base_register, true, 1); + hole = add_node( hole, previous->base_register+previous->limit_register, next->base_register, true, ++hole_ids); } umem_head = umem_head->next; }