From 6aba1fb4a803098bcf3058fc7e4ce63f9b85b8bc Mon Sep 17 00:00:00 2001 From: Robbe Van Herck Date: Tue, 7 Jan 2020 14:53:27 +0100 Subject: [PATCH] The _most_ basic memory managment --- kernel/kernel.c | 24 ++++++++++++++++++++++-- kernel/memory.c | 9 +++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 kernel/memory.c diff --git a/kernel/kernel.c b/kernel/kernel.c index b649b68..2722b95 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -3,6 +3,7 @@ #include #include "terminal.c" +#include "memory.c" /* Check if the compiler thinks you are targeting the wrong operating system. */ #if defined(__linux__) @@ -14,6 +15,11 @@ #error "This tutorial needs to be compiled with a ix86-elf compiler" #endif +struct person { + long id; + int age; + char gender; +}; void kernel_main(void) { @@ -26,10 +32,24 @@ void kernel_main(void) terminal_putchar('l'); terminal_putchar('o'); - /* Newline support is left as an exercise. */ terminal_setcolor(vga_entry_color(VGA_COLOR_GREEN, VGA_COLOR_BLACK)); terminal_writestring(" kernel"); terminal_setcolor(vga_entry_color(VGA_COLOR_LIGHT_GREY, VGA_COLOR_BLACK)); terminal_writestring(" World!\n"); - terminal_writestring("Newlines!"); + terminal_writestring("Newlines!\n"); + + char* memory_str = alloc(sizeof(char) * 7); + for (int i = 0; i < 6; i++) { + memory_str[i] = "Memory"[i]; + } + memory_str[6] = 0; + + char* management_str = alloc(sizeof(char) * 13); + for (int i = 0; i < 12; i++) { + management_str[i] = " management!"[i]; + } + management_str[12] = 0; + + terminal_writestring(memory_str); + terminal_writestring(management_str); } \ No newline at end of file diff --git a/kernel/memory.c b/kernel/memory.c new file mode 100644 index 0000000..ad060e9 --- /dev/null +++ b/kernel/memory.c @@ -0,0 +1,9 @@ +#include + +void* _curr_end = (void*) 0x10000; + +void* alloc(size_t size) { + void* thanks_jp = _curr_end; + _curr_end += size; + return thanks_jp; +} \ No newline at end of file