summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-04-18 21:18:59 -0400
committerFreya Murphy <freya@freyacat.org>2025-04-18 21:20:49 -0400
commit3516b8a69087c31d45d06329ab79e9017301f6b8 (patch)
treef03aedcf40daf9c72a31e8d8b8c22e37aa6dee4a
parentmore pci devices (diff)
downloadcomus-3516b8a69087c31d45d06329ab79e9017301f6b8.tar.gz
comus-3516b8a69087c31d45d06329ab79e9017301f6b8.tar.bz2
comus-3516b8a69087c31d45d06329ab79e9017301f6b8.zip
set mmap limit
Diffstat (limited to '')
-rw-r--r--kernel/include/comus/limits.h5
-rw-r--r--kernel/include/comus/memory.h4
-rw-r--r--kernel/mboot/mmap.c4
-rw-r--r--kernel/procs.c (renamed from kernel/procs/procs.c)0
4 files changed, 10 insertions, 3 deletions
diff --git a/kernel/include/comus/limits.h b/kernel/include/comus/limits.h
index aedb49e..58cc9cb 100644
--- a/kernel/include/comus/limits.h
+++ b/kernel/include/comus/limits.h
@@ -9,9 +9,12 @@
/// max number of processes
#define N_PROCS 256
-/// max numer of pci devices
+/// max nubmer of pci devices
#define N_PCI_DEV 256
+/// max memory entires
+#define N_MMAP_ENTRY 64
+
/// length of terminal buffer
#define TERM_MAX_WIDTH 480
#define TERM_MAX_HEIGHT 270
diff --git a/kernel/include/comus/memory.h b/kernel/include/comus/memory.h
index ceca4aa..ad049ec 100644
--- a/kernel/include/comus/memory.h
+++ b/kernel/include/comus/memory.h
@@ -9,11 +9,11 @@
#ifndef _MEMORY_H
#define _MEMORY_H
+#include <comus/limits.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
-#define MMAP_MAX_ENTRY 64
#define PAGE_SIZE 4096
#define F_PRESENT 0x001
@@ -34,7 +34,7 @@ struct memory_segment {
struct memory_map {
uint32_t entry_count;
- struct memory_segment entries[MMAP_MAX_ENTRY];
+ struct memory_segment entries[N_MMAP_ENTRY];
};
typedef struct mem_ctx_s *mem_ctx_t;
diff --git a/kernel/mboot/mmap.c b/kernel/mboot/mmap.c
index e0963ca..d1d3d9a 100644
--- a/kernel/mboot/mmap.c
+++ b/kernel/mboot/mmap.c
@@ -1,3 +1,5 @@
+#include "comus/memory.h"
+#include "lib/klib.h"
#include <lib.h>
#include <comus/mboot.h>
@@ -32,6 +34,8 @@ int mboot_get_mmap(struct memory_map *res)
uintptr_t i = (uintptr_t)mmap->entries;
for (; i < (uintptr_t)mmap->entries + mmap->size;
i += mmap->entry_size, idx++) {
+ if (idx >= N_MMAP_ENTRY)
+ panic("Too many mmap entries: limit is %d", N_MMAP_ENTRY);
struct multiboot_mmap_entry *seg = (struct multiboot_mmap_entry *)i;
res->entries[idx].addr = seg->addr;
res->entries[idx].len = seg->len;
diff --git a/kernel/procs/procs.c b/kernel/procs.c
index a8352b0..a8352b0 100644
--- a/kernel/procs/procs.c
+++ b/kernel/procs.c