summaryrefslogtreecommitdiffstats
path: root/hal
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-10-16 16:42:22 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-10-16 16:42:22 -0400
commitd8aca3ff2501f9a77e22e5afb7a30380aed205af (patch)
treea27db1749a35aea07317406f170a2d9b2a799ce7 /hal
parent548506392b789f58b1556a6ffca917441e1d89fd (diff)
downloadjove-kernel-d8aca3ff2501f9a77e22e5afb7a30380aed205af.tar.gz
jove-kernel-d8aca3ff2501f9a77e22e5afb7a30380aed205af.tar.bz2
jove-kernel-d8aca3ff2501f9a77e22e5afb7a30380aed205af.zip
remove explicit framebuffer in kernel. reduce locking in syscalls
Diffstat (limited to 'hal')
-rw-r--r--hal/framebuffer.h14
-rw-r--r--hal/memory.h3
-rw-r--r--hal/shmem.c12
3 files changed, 15 insertions, 14 deletions
diff --git a/hal/framebuffer.h b/hal/framebuffer.h
deleted file mode 100644
index e070889..0000000
--- a/hal/framebuffer.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef _JOVE_HAL_FRAMEBUFFER_H
-#define _JOVE_HAL_FRAMEBUFFER_H 1
-
-#include <stddef.h>
-#include "hal/obj.h"
-
-size_t fb_width(jove_owned_obj_t *fb);
-size_t fb_height(jove_owned_obj_t *fb);
-int fb_blit(jove_owned_obj_t *obj, uint32_t *data, size_t x, size_t y, size_t width, size_t height);
-
-void *fb_remap(uintptr_t fb_address, size_t fb_size);
-void fb_init(void);
-
-#endif
diff --git a/hal/memory.h b/hal/memory.h
index 9e799c0..a8fdc86 100644
--- a/hal/memory.h
+++ b/hal/memory.h
@@ -49,6 +49,7 @@ extern virtaddr_t *__syscall_stack_mapping;
extern virtaddr_t *__interrupt_stack_mapping;
void mem_setup_regions(void);
+void mem_setup_modules(void);
physaddr_t phys_fromvirt(virtaddr_t virt);
void *phys_tovirt(physaddr_t phys);
@@ -107,5 +108,7 @@ int pagedir_unmap_shmem_frame(
jove_owned_obj_t *tgt, uintptr_t vptr);
int shmem_new(jove_owned_obj_t *untyped_obj);
+size_t shmem_numpages(jove_owned_obj_t *shmem_obj);
+void *shmem_deref(jove_owned_obj_t *shmem_obj);
#endif
diff --git a/hal/shmem.c b/hal/shmem.c
index 3785c2e..2928a1b 100644
--- a/hal/shmem.c
+++ b/hal/shmem.c
@@ -18,3 +18,15 @@ shmem_new(jove_owned_obj_t *untyped_obj)
memset(untyped, 0, untyped->limit);
return 0;
}
+
+inline size_t
+shmem_numpages(jove_owned_obj_t *shmem_obj)
+{
+ return obj_getvalue(shmem_obj) & JOVE_SMHEM_MAXPAGES;
+}
+
+inline void*
+shmem_deref(jove_owned_obj_t *shmem_obj)
+{
+ return phys_tovirt(obj_getvalue(shmem_obj) & ~JOVE_SMHEM_MAXPAGES);
+}