summaryrefslogtreecommitdiffstats
path: root/proc
diff options
context:
space:
mode:
Diffstat (limited to 'proc')
-rw-r--r--proc/init.c21
-rw-r--r--proc/scheduler.c3
-rw-r--r--proc/scheduler.h6
3 files changed, 20 insertions, 10 deletions
diff --git a/proc/init.c b/proc/init.c
index 65299f4..4389187 100644
--- a/proc/init.c
+++ b/proc/init.c
@@ -2,32 +2,33 @@
#include "hal/memory.h"
#include "panic/panic.h"
-objpath_part_t s_last_untyped = JOVE_OBJDIR_ENTRIES-1;
+objpath_part_t s_last_region = JOVE_OBJDIR_ENTRIES-1;
jove_owned_obj_t
init_pop_alloc(void)
{
- jove_owned_obj_t *untyped_dir = objdir_trygetlocal(_rootdir_obj, ROOTDIR_UNTYPED_I);
- if(untyped_dir == 0) {
+ jove_owned_obj_t *freemem_dir = objdir_trygetlocal(_rootdir_obj, ROOTDIR_FREEMEMORY_I);
+ if(freemem_dir == 0) {
kpanic("Untyped directory is locked!\n");
}
int cycles = 0;
while(cycles++ < 512) {
- if(objdir_peeklocal(untyped_dir, s_last_untyped).type != JOVE_OBJ_UNTYPED) {
- s_last_untyped--;
+ if(objdir_peeklocal(freemem_dir, s_last_region).type != JOVE_OBJ_REGION) {
+ s_last_region--;
continue;
}
jove_owned_obj_t frame = { 0 };
- jove_owned_obj_t *untyped = objdir_getlocal(untyped_dir, s_last_untyped);
+ jove_owned_obj_t *region = objdir_getlocal(freemem_dir, s_last_region);
- if(untyped_split(untyped, &frame, 0x1000) < 0) {
- kpanic("%s: Failed to split last untyped.\n", __func__);
+ if(region_alloc(region, &frame) < 0) {
+ obj_release(region);
+ continue;
}
- obj_release(untyped);
- obj_release(untyped_dir);
+ obj_release(region);
+ obj_release(freemem_dir);
return frame;
}
kpanic("%s: Kernel is out of memory!\n", __func__);
diff --git a/proc/scheduler.c b/proc/scheduler.c
new file mode 100644
index 0000000..852cfef
--- /dev/null
+++ b/proc/scheduler.c
@@ -0,0 +1,3 @@
+#include "scheduler.h"
+
+
diff --git a/proc/scheduler.h b/proc/scheduler.h
new file mode 100644
index 0000000..6f1b6b2
--- /dev/null
+++ b/proc/scheduler.h
@@ -0,0 +1,6 @@
+#ifndef _JOVE_PROC_SCHEDULER_H
+#define _JOVE_PROC_SCHEDULER_H 1
+
+
+
+#endif