summaryrefslogtreecommitdiff
path: root/stage3
diff options
context:
space:
mode:
Diffstat (limited to 'stage3')
-rw-r--r--stage3/heap.c8
-rw-r--r--stage3/heap.h15
-rw-r--r--stage3/main.c4
3 files changed, 20 insertions, 7 deletions
diff --git a/stage3/heap.c b/stage3/heap.c
index 2c54d8c..0e9a8d6 100644
--- a/stage3/heap.c
+++ b/stage3/heap.c
@@ -9,6 +9,7 @@
static heap_header init_free_ptr;
static heap_header *free_ptr = nil;
+static usize total_size = 0;
#ifdef DEBUG
void heap_check()
@@ -127,9 +128,16 @@ void heap_add(void *ptr, usize size)
h->size = size - sizeof(heap_header);
kfree(h + 1);
+
+ total_size += size;
}
heap_header *heap_get_free_ptr()
{
return free_ptr;
}
+
+usize heap_total_size()
+{
+ return total_size;
+}
diff --git a/stage3/heap.h b/stage3/heap.h
index 0b7057b..15bf071 100644
--- a/stage3/heap.h
+++ b/stage3/heap.h
@@ -3,21 +3,22 @@
#include "def.h"
+typedef struct __attribute__((packed)) heap_header {
+ struct heap_header *next;
+ usize size;
+} heap_header;
+
void heap_init();
+
void heap_add(void *ptr, usize size);
+heap_header *heap_get_free_ptr();
+usize heap_total_size();
void *try_kmalloc(usize size);
void *kmalloc(usize siz);
void kfree(void *ptr);
void *krealloc(void *ptr, usize size);
-typedef struct __attribute__((packed)) heap_header {
- struct heap_header *next;
- usize size;
-} heap_header;
-
-heap_header *heap_get_free_ptr();
-
#ifdef DEBUG
void heap_check();
#else
diff --git a/stage3/main.c b/stage3/main.c
index b4ce692..3d7d7aa 100644
--- a/stage3/main.c
+++ b/stage3/main.c
@@ -125,6 +125,10 @@ void kmain(struct bootinfo *info)
print(S("\n"));
}
+ print(S("total heap size: "));
+ print_bytes(heap_total_size());
+ print(S("\n"));
+
print(S("gfx framebuffer at "));
print_hex((u64) bootinfo->gfx_framebuffer);
print(S("-"));