diff --git a/Part3/09_memory/kernel/kernel.c b/Part3/09_memory/kernel/kernel.c index 159b7fe..824860b 100644 --- a/Part3/09_memory/kernel/kernel.c +++ b/Part3/09_memory/kernel/kernel.c @@ -46,10 +46,6 @@ if (sstrlen(args1, 15) > nDigits + 1) { char *args2 = args1 + nDigits + 1; limit = digit_conver(args2); - if (limit < 100) { - kprint("That memory address is to below the min of 0x100.\n"); - valid = false; - } } if (base < 10000) { kprint("That memory address is reserved by the Kernel, addresses must be 10000+\n"); @@ -193,7 +189,7 @@ void print_memory(node *umem_head, node *hole_head) { total_allocated = (total_allocated+1)/(0x400); char c[16]; - int_to_ascii( total_allocated-64, c, 16); + int_to_ascii( total_allocated, c, 16); kprint("Total Allocated: "); kprint(c); kprint("kb\n"); @@ -215,8 +211,8 @@ void print_memory(node *umem_head, node *hole_head) { node* get_holes(node* umem_head) { if (umem_head == NULL) { - kprint("Holes list is Empty\n"); - return NULL; + node *hole = add_node(hole, 0x10000, 0x3FFFF, true, 0); + return hole; } u32 hole_ids = 0; node *hole = NULL; @@ -234,4 +230,30 @@ node* get_holes(node* umem_head) { umem_head = umem_head->next; } return hole; +} + +void begin_output_example() { + static u32 delete_id = 0; // static persistent variable for incrementing during test + static node* umem_head = NULL; // static persistent head variable for contiguous block allocations + static node* hole_head = get_holes(umem_head); + + kprint("Jonathan Turner - S02\n"); + kprint("Current Allocation: \n"); + print_memory(umem_head, holes_head); + umem_head = add_node( umem_head, 0x10000, 0x3FF, true, global_id++); + umem_head = add_node( umem_head, 0x11000, 0x1FF, true, global_id++); + umem_head = add_node( umem_head, 0x12000, 0x3FF, true, global_id++); + umem_head = add_node( umem_head, 0x15000, 0x7FF, true, global_id++); + umem_head = add_node( umem_head, 0x22000, 0x1FFF, true, global_id++); + print_memory(umem_head, holes_head); + node* temp = umem_head->next; + free_node(umem_head); + umem_head = temp; + umem_head->previous = NULL; + print_memory(umem_head, holes_head); + temp = get_tail(umem_head); + temp->previous = NULL; + free_node(temp); + print_memory(umem_head, holes_head); + } \ No newline at end of file