summaryrefslogtreecommitdiff
path: root/kernel/memory/physalloc.c
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-04-19 16:36:51 -0400
committerFreya Murphy <freya@freyacat.org>2025-04-19 16:37:54 -0400
commit472ec944d2ed81d0304cc6cac80946a6a44776be (patch)
treef6cae641c143a0b45bb289d9d9fc6145706025b0 /kernel/memory/physalloc.c
parentset mmap limit (diff)
downloadcomus-472ec944d2ed81d0304cc6cac80946a6a44776be.tar.gz
comus-472ec944d2ed81d0304cc6cac80946a6a44776be.tar.bz2
comus-472ec944d2ed81d0304cc6cac80946a6a44776be.zip
UEFI and republicans
Diffstat (limited to 'kernel/memory/physalloc.c')
-rw-r--r--kernel/memory/physalloc.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/kernel/memory/physalloc.c b/kernel/memory/physalloc.c
index 676e68e..87072c4 100644
--- a/kernel/memory/physalloc.c
+++ b/kernel/memory/physalloc.c
@@ -20,10 +20,11 @@ static uint64_t segment_count;
struct memory_map phys_mmap;
struct memory_segment *page_start;
-static const char *segment_type_str[] = { "Reserved", "Free",
- "Reserved", "ACPI Reserved",
- "Hibernation", "Defective",
- "Unknown" };
+static const char *segment_type_str[] = {
+ [SEG_TYPE_FREE] = "Free", [SEG_TYPE_RESERVED] = "Reserved",
+ [SEG_TYPE_ACPI] = "ACPI Reserved", [SEG_TYPE_HIBERNATION] = "Hibernation",
+ [SEG_TYPE_DEFECTIVE] = "Defective", [SEG_TYPE_EFI] = "EFI Reserved",
+};
static int n_pages(const struct memory_segment *m)
{
@@ -124,7 +125,7 @@ static bool segment_invalid(const struct memory_segment *segment)
{
if (segment->len < 1)
return true;
- if (segment->type != 1)
+ if (segment->type != SEG_TYPE_FREE)
return true;
if (segment->addr < kaddr(kernel_start))
return true;
@@ -245,16 +246,9 @@ void memory_report(void)
kprintf("MEMORY MAP\n");
for (uint32_t i = 0; i < phys_mmap.entry_count; i++) {
struct memory_segment *seg;
- const char *type_str;
-
seg = &phys_mmap.entries[i];
- if (seg->type > 6)
- type_str = segment_type_str[6];
- else
- type_str = segment_type_str[seg->type];
-
- kprintf("ADDR: %16p LEN: %4s TYPE: %s (%d)\n", (void *)seg->addr,
- btoa(seg->len, buf), type_str, seg->type);
+ kprintf("ADDR: %16p LEN: %4s TYPE: %s\n", (void *)seg->addr,
+ btoa(seg->len, buf), segment_type_str[seg->type]);
}
kprintf("\nMEMORY USAGE\n");