24 Commits

Author SHA1 Message Date
5d94525c7a Kernel: Figure out why a program is misbehaving 2022-11-06 18:12:25 +01:00
c604c074a1 Kernel: Rename ASSERT() to ensure()
Doesn't get stripped on release builds, so it shouldn't be named assert.
2022-11-02 19:38:15 +01:00
b035795eb3 Kernel: Move errno.h and (k)assert.h out of the main include directory
This is mostly so IDEs don't pick them up instead of the userspace headers :)
2022-10-19 17:41:23 +02:00
ef8ba3dec4 Kernel: Do not hang when a user task misbehaves
This was for testing/debugging. But we DEFINITELY don't want that.
2022-10-19 17:25:56 +02:00
62d631f1b4 Kernel: Rename assert.h to kassert.h so IDEs pickup the kernel header instead of the userspace one 2022-10-15 12:56:48 +02:00
ee712432bd Some more multiple address space stuff
This page-faults. This is because the memory where the ELF should be is all zeroes, which the CPU tries to interpret.
2022-10-13 21:14:39 +02:00
f83a6ace51 Kernel, libc: Add support for providing a status code to exit()
The exit() libc function already accepted an integer, but didn't pass it on to the kernel since we had no mechanism for it to do that.
Now, the kernel stores a task's exit status to display it later (and in the future, return it to userspace via wait()/waitpid())
2022-10-08 17:56:40 +02:00
f25014a8ed refine syscalls 2022-09-29 19:17:43 +02:00
46f459337c Interrupts: Remove ensure_handler and use a more reliable way of detecting if we are in a handler 2022-09-29 18:35:51 +02:00
f1a7138568 User mode (with a few syscalls)
IT ACTUALLY WORKS NOW.

Why wasn't it working? Oh, because I was not setting already present page tables's permissions to user mode. Just a little bug. THAT I SPENT DAYS TRYING TO FIND

Anyways, it works now. Such a relief...
2022-09-25 20:35:05 +02:00
aee4e55fdd add a proper kernel panic 2022-09-25 16:56:00 +02:00
ec01dc2927 Scheduler: Change fixed Task array for (highly inefficient) memory allocation, add userspace task support (which as memory is mapped kernel-only instantly crashes), and support for exiting a task (marking it as exited and reaping it later) 2022-09-21 21:06:00 +02:00
49ddb47ad4 Reorganize structure 2022-09-21 17:56:53 +02:00
1c12cf016e Add a Scheduler.
Finally.

Just Round Robin with sleeping, but it's still awesome. I think this can finish v0.3, with a few adjustments.
2022-09-20 19:58:04 +02:00
e6c6a1677a Rename "SavedContext" to "Context"
Seemed like a more appropriate name.
2022-09-20 19:56:43 +02:00
5ee8e17b76 Ensure we are in an interrupt in the interrupt handler 2022-09-20 17:16:23 +02:00
ee8c2759a6 Got a stack tracer working!! 2022-09-19 21:11:43 +02:00
f7e7a6661d Use kernel logging in interrupts instead of plain old printf() 2022-09-18 09:43:58 +02:00
0cb59ee17f please work please 2022-09-11 08:23:32 +02:00
b4484e951d LOTS MORE LOGGING. which is great, of course. 2022-09-07 19:41:08 +02:00
97aef95daa Fix format specifiers 2022-09-06 18:31:27 +02:00
bd0a24097f Add a KernelMemoryManager namespace to wrap PMM + VMM 2022-09-06 18:08:15 +02:00
1367e88d88 Finally implement %l and %z format modifiers
Finally, we can use %zx with a 64-bit number instead of %x%x with 2 32-bit values split from a 64-bit number!
2022-09-05 16:59:45 +02:00
1b727a66ea Ready. Set. Go! 2022-09-05 16:13:51 +02:00