From d3a49314917ab8acb16689fc6643918f49cdde83 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Wed, 29 Nov 2023 18:06:25 -0500 Subject: [PATCH] progressing iteration --- Part3/09_memory/kernel/kernel.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Part3/09_memory/kernel/kernel.c b/Part3/09_memory/kernel/kernel.c index 85243e9..26f498a 100644 --- a/Part3/09_memory/kernel/kernel.c +++ b/Part3/09_memory/kernel/kernel.c @@ -159,12 +159,21 @@ void print_holes(node* umem_head) { kprint("Holes list is Empty"); } - + node *hole = NULL; while(umem_head != NULL) { - if (umem_head->base_register - 0x10000 != 0) { - node *hole = add_node( hole, 0x10000, umem_head->base_register-0x10000, true, -1); - print_list(hole, false); - umem_head = umem_head->next; + if (umem_head->previous == NULL) { + if (umem_head->base_register != 0) { + hole = add_node( hole, 0x10000, umem_head->base_register-0x10000, true, 1); + } + } else if (umem_head->next == NULL) { + node previous = umem_head->previous; + hole = add_node( hole, previous->base_register+previous->limit_register, -1, true, 1); + } 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); } + umem_head = umem_head->next; } + print_list(hole, false); } \ No newline at end of file