From 6626a1ecee2759d6fb71e72cc95b22bd6af22875 Mon Sep 17 00:00:00 2001 From: the lemons Date: Sun, 4 Apr 2021 13:45:42 -0500 Subject: memory size reporting --- kernel.bin | Bin 89720 -> 89932 bytes os.iso | Bin 19892224 -> 19892224 bytes src/main.c | 4 +++- src/memory.c | 5 +++++ src/memory.h | 8 +++++--- 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/kernel.bin b/kernel.bin index 1043589..8c58cab 100755 Binary files a/kernel.bin and b/kernel.bin differ diff --git a/os.iso b/os.iso index a095b2f..190667f 100644 Binary files a/os.iso and b/os.iso differ diff --git a/src/main.c b/src/main.c index a17db9a..382abe7 100644 --- a/src/main.c +++ b/src/main.c @@ -35,7 +35,9 @@ void kernel_main(multiboot_info_t *mb) { interrupt_init(); start_interrupts(); init_memory(mb); - + + printf("%u MB memory available\n", memory_available / 1000000); + vprint(" _ _ \n"); vprint(" ___(_) |_ _ __ ___ _ __ ___ ___ ___ \n"); vprint(" / __| | __| '__/ _ \\| '_ \\/ __| / _ \\/ __|\n"); diff --git a/src/memory.c b/src/memory.c index 970ba29..bc65311 100644 --- a/src/memory.c +++ b/src/memory.c @@ -4,6 +4,7 @@ #include #include "memory.h" #include "multiboot.h" +#include "printf.h" struct memory_area { uint32_t len; @@ -12,6 +13,8 @@ struct memory_area { struct memory_area *first = NULL; +uint32_t memory_available = 0; + void init_memory(multiboot_info_t *mb) { struct memory_area *prev = NULL; for ( @@ -31,6 +34,8 @@ void init_memory(multiboot_info_t *mb) { length = UINT_MAX - e->addr; else length = e->len; + memory_available += length; + struct memory_area *cur = (struct memory_area *) e->addr; cur->len = length; diff --git a/src/memory.h b/src/memory.h index 3c38af7..c5b6367 100644 --- a/src/memory.h +++ b/src/memory.h @@ -18,18 +18,20 @@ enum cell_type { struct cell { uint8_t type; - union car { + union { struct cell *free; struct cell *cons; - struct {int type : 8; int size : 24;} ARRAY_CELL; + struct {int type : 8; int size : 24;} array_cell; uint32_t int_; uint32_t char_; float float_; REDACTED_t apioform; - }; + } car; struct cell *cdr; }; +uint32_t memory_available; + void init_memory(multiboot_info_t *mb); #endif -- cgit v1.2.3