summaryrefslogtreecommitdiff
path: root/kernel/mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/mem.c')
-rw-r--r--kernel/mem.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/kernel/mem.c b/kernel/mem.c
new file mode 100644
index 0000000..531dd81
--- /dev/null
+++ b/kernel/mem.c
@@ -0,0 +1,32 @@
+#include <types.h>
+#include <mem.h>
+
+static char eheap[EHEAP_SIZE] = {0};
+static size_t eheap_off = 0;
+
+void* kmalloc(size_t size) {
+ return (void*)size;
+}
+
+void* kemalloc(size_t size) {
+ size = (size + 7) & ~7;
+
+ if (eheap_off + size > EHEAP_SIZE) {
+ return NULL;
+ }
+
+ void *ptr = &eheap[eheap_off];
+ eheap_off += size;
+ return ptr;
+}
+
+void* memcpy(void *to, const void *from, size_t size) {
+ char *dest = (char *)to;
+ const char *src = (const char *)from;
+
+ while (size--) {
+ *dest++ = *src++;
+ }
+
+ return dest;
+}