summaryrefslogtreecommitdiffstats
path: root/lib/libjove/libjove.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libjove/libjove.c')
-rw-r--r--lib/libjove/libjove.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/libjove/libjove.c b/lib/libjove/libjove.c
index 6b40a54..ef5d7e6 100644
--- a/lib/libjove/libjove.c
+++ b/lib/libjove/libjove.c
@@ -1,6 +1,7 @@
#include "include/jove.h"
#include "include/object-untyped.h"
#include "error.h"
+#include "heap/heap.h"
uintmax_t __jove_syscall_obj = 0;
void *__jove_syscall_ptr = 0;
@@ -15,3 +16,36 @@ uintptr_t __program_end;
void *(*_jove_alloc)(size_t) = NULL;
void (*_jove_free)(void*) = NULL;
void *(*_jove_realloc)(void*, size_t) = NULL;
+
+extern void __libjove_arch_init(void);
+
+void
+__libjove_init(uint8_t syscall_obj, void *syscall_ptr)
+{
+ __rootdir = (KernelObjectDirectory) {
+ .typed = {
+ .type = KO_OBJECT_DIRECTORY,
+ .membi = 0,
+ .parent = NULL
+ },
+ .firstfree = -1,
+ .lastmemb = -1
+ };
+
+ __jove_syscall_obj = syscall_obj;
+ __jove_syscall_ptr = syscall_ptr;
+
+ __jove_work_obj = (KernelObjectTyped) {
+ .membi = jove_objdir_lastmemb(&__rootdir),
+ .parent = &__rootdir,
+ .type = KO_NONE
+ };
+
+ __libjove_arch_init();
+}
+
+void
+__libjove_init_untypeddir(uint8_t diri)
+{
+ _jove_alloc_objdir_inplace(&__jove_untyped_directory, &__rootdir, diri);
+}