aboutsummaryrefslogtreecommitdiff
path: root/src/userspace
diff options
context:
space:
mode:
authorMarvin Borner2020-04-29 23:26:51 +0200
committerMarvin Borner2020-04-29 23:26:51 +0200
commit8b52d7698e4a9a5abaf730c7da1c4f865cb78f8e (patch)
tree873f2ae99b369f4db809fe1cd2684ae0e60c6144 /src/userspace
parent0f54f0de1004c6e9a455c295dc76879ac37a408f (diff)
Working framebuffer from userspace...
Well, it doesn't actually work. I disabled several security measures to get this working and I'll try to fix these soon.
Diffstat (limited to 'src/userspace')
-rw-r--r--src/userspace/libgui/draw.c1
-rw-r--r--src/userspace/libgui/init.c8
-rw-r--r--src/userspace/programs/init.c11
3 files changed, 10 insertions, 10 deletions
diff --git a/src/userspace/libgui/draw.c b/src/userspace/libgui/draw.c
index adcdec2..ee35d3c 100644
--- a/src/userspace/libgui/draw.c
+++ b/src/userspace/libgui/draw.c
@@ -1,4 +1,5 @@
#include <stdint.h>
+#include <stdio.h>
#include <gui.h>
void gui_draw_rectangle(int x1, int y1, int x2, int y2, const u32 color[3])
diff --git a/src/userspace/libgui/init.c b/src/userspace/libgui/init.c
index 7cd1fc3..04d7ac3 100644
--- a/src/userspace/libgui/init.c
+++ b/src/userspace/libgui/init.c
@@ -1,4 +1,5 @@
#include <stdint.h>
+#include <stdio.h>
#include <syscall.h>
#include <gui.h>
@@ -11,12 +12,15 @@ void gui_init()
{
pointers = syscall_pointers();
- return; // TODO: Fix GUI page fault
vbe_width = pointers->mode_info->width;
vbe_height = pointers->mode_info->height;
vbe_pitch = pointers->mode_info->pitch;
vbe_bpl = pointers->mode_info->bpp >> 3;
- fb = pointers->mode_info->framebuffer;
+
+ // TODO: Why tf is the kheap magic stored in the first few bytes?!
+ fb = (pointers->mode_info->framebuffer << 16);
gui_screen_clear();
+ printf("%dx%dx%d\n", vbe_width, vbe_height, vbe_bpl << 3);
+ printf("0x%x\n", fb);
} \ No newline at end of file
diff --git a/src/userspace/programs/init.c b/src/userspace/programs/init.c
index a669249..3c1d51f 100644
--- a/src/userspace/programs/init.c
+++ b/src/userspace/programs/init.c
@@ -5,14 +5,9 @@
void main()
{
- u32 *buf = malloc(4096);
- for (int i = 0; i < 4; i++)
- buf[i] = 42;
- syscall_halt();
-
- //printf("Initializing userspace...\n");
- //gui_init();
- //syscall_exec("/bin/sh");
+ printf("Initializing userspace...\n");
+ gui_init();
+ syscall_exec("/bin/sh");
while (1) {
};