75 Commits

Author SHA1 Message Date
fb52c67f16
kernel/x86_64: Map kernel-side pages as global to avoid TLB flushes
Some checks are pending
Build and test / build (push) Waiting to run
Fixes #34.
2024-05-01 18:14:43 +02:00
1d0f18cab9
kernel: Move stack checking and expansion into an architecture-independent file
Some checks failed
Build and test / build (push) Failing after 1m45s
2024-05-01 10:52:08 +02:00
de6f5c38d8
kernel: Try to grow the stack on stack overflows, up to a maximum of 8MB
All checks were successful
Build and test / build (push) Successful in 1m49s
This helps keep GCC happy when compiling slightly complex programs :)
2024-04-28 16:27:18 +02:00
17b44a8ce6
kernel: Reenable stack tracing in kernel-mode exceptions
Stack tracing in user-mode exceptions was moved to when a signal kills the process, but this isn't done for kernel-mode exceptions so there was no stack trace anymore.
2024-01-05 22:14:31 +01:00
2a85a7473a
kernel: Show stacktraces on all signal terminations 2024-01-04 21:04:24 +01:00
1208d94b37
kernel: Add stack diagnostics to userspace fault reporting 2024-01-04 11:14:19 +01:00
c4d2847da1
kernel: Rework the entire time system to use modular clocks
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-15 23:50:04 +01:00
c75dbc0cbb
kernel: Lookup and print symbols for addresses in backtraces 2023-10-13 22:11:52 +02:00
36fad85396
kernel+init+preinit+wind: Remove the kernel TTY and support only userspace terminals
All checks were successful
continuous-integration/drone/push Build is passing
Still allow printing text to the console, but without text input or ANSI escape fancy stuff.
2023-09-21 19:31:54 +02:00
27eacac19c
kernel: Add a blinking cursor to the terminal
All checks were successful
continuous-integration/drone/push Build is passing
2023-09-04 11:44:35 +02:00
e8f3dd4cf9
kernel: Add a PS/2 mouse driver 2023-08-02 11:55:45 +02:00
5aad7d3154
kernel/x86_64: Fail on invalid interrupts instead of calling FIXME_UNHANDLED_INTERRUPT
All checks were successful
continuous-integration/drone/push Build is passing
A FIXME is something that should be changed later,
this is a check for something that should never happen.
2023-07-25 18:23:33 +02:00
105ed79f8f
kernel: Reenable userspace stack tracing, but hidden behind a config flag
All checks were successful
continuous-integration/drone/push Build is passing
Sometimes this is needed for userspace program debugging (such as ports),
but sometimes it can crash, so we leave it off by default.
2023-07-25 17:02:09 +02:00
cd6bf745a7
tests+kernel+init: Run tests automatically in a headless way
Some checks failed
continuous-integration/drone/push Build is failing
2023-07-21 14:09:37 +02:00
de6fe7f7c2
kernel+libc+sh: Make the TTY device actually follow termios rules
All checks were successful
continuous-integration/drone/push Build is passing
Like, so much more termios compatibility!
2023-07-13 20:33:20 +02:00
f629e17ff4
kernel/x86_64: Only show kernel addresses in backtraces
This avoids walking off into userspace memory where we don't know what could happen.
2023-07-12 16:04:45 +02:00
d27ffce5db
kernel: Move the signal handling logic to after a syscall sets its return value
When a signal was caught after a syscall, it was doing so without preserving the return value of the syscall.
2023-07-12 13:34:30 +02:00
015419b8f5
kernel: Generate signals when children exit / when faults occur
Userspace can now catch segfaults!
2023-07-10 20:49:22 +02:00
e60b2a3d2f
kernel: Move thread exit code into a separate common function
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-19 12:33:25 +02:00
7efc3a6ea1
kernel: Show stack traces on page faults + crash the process instead of the whole system on GPFs 2023-06-19 10:45:08 +02:00
7cace9a0d7
kernel: Provide more meaningful panic messages for critical failures 2023-06-17 19:43:25 +02:00
7593947c33
kernel/ATA: Route interrupts to the correct drive 2023-06-16 21:10:33 +02:00
a99c5e325d
kernel: Actually register interrupt handlers properly 2023-06-16 21:10:32 +02:00
739950e8f0
kernel/CPU: Allow passing arbitrary data to interrupt handlers 2023-06-16 21:10:31 +02:00
f0caf010bf
kernel/x86_64: Add a way to register IRQ handlers from other kernel subsystems 2023-06-16 21:10:26 +02:00
11a4f8cc90
kernel: Wake the parent process when a child exits because of a page fault 2023-05-28 21:50:13 +02:00
72dadc6706
kernel: Define a constant to check for default memory access
Some checks failed
continuous-integration/drone/push Build is failing
2023-05-07 21:38:38 +02:00
b25e212880
kernel: Make a generic function for checking memory flags
Some checks failed
continuous-integration/drone/push Build is failing
2023-05-07 21:37:01 +02:00
293a992133
kernel: Add a kernel_wait_for_event() function to avoid weird calls to kernel_wait in kthreads
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-04 23:43:00 +02:00
4a7f68b989
kernel: Add a convenience wake_up() function 2023-05-04 23:35:54 +02:00
3ed9e578c7
kernel/x86_64: Wake the IO thread up only when there is an IO event, instead of polling every 10 ms 2023-05-04 23:07:09 +02:00
abaf24d0da
kernel/CPU: Move some stuff to StringView 2023-05-03 17:35:46 +02:00
77dcfab5ef
kernel: Run the initialization process in a thread
All checks were successful
continuous-integration/drone/push Build is passing
This way we can give it more stack and also reclaim it later!
2023-04-28 13:23:07 +02:00
5d56638851
kernel: Ignore all non-bootstrap processors
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-22 12:25:43 +02:00
d48d0efb07
kernel: Add names to threads
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-24 21:05:38 +01:00
d63c8abbfd
kernel/x86_64: Terminate page faults in a waitpid-friendly way 2023-03-24 00:52:17 +01:00
03adaa356c
kernel: Avoid printing keypresses twice 2023-03-23 21:33:50 +01:00
d33fccc66f
kernel: Implement reading from /dev/console 2023-03-19 19:15:19 +01:00
cd00e41f59
arch/x86_64: Decode keyboard scancodes
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-19 11:17:43 +01:00
e30eec4213
kernel/x86_64: Avoid kernel panics when a page fault occurs in a userspace thread 2023-03-07 21:08:05 +01:00
ca85a69442
kernel: Save floating-point environment when switching in and out of userspace threads 2023-03-07 20:59:11 +01:00
794567327f
kernel, luna: Port non-VFS changes over from pull request #22
All checks were successful
continuous-integration/drone/push Build is passing
OwnedPtr, SharedPtr: Add operator bool
Option, Result: Make try_move_value() non-const since it modifies the Option
kernel: Switch to a stack we control for the main task as soon as we leave early boot
Heap: Fix GPF caused when making many small allocations
Heap: Avoid accessing a block after it's potentially deleted
luna: Skip UBSAN.cpp in CMakeLists as that's not implemented yet
luna: Use spinlocks in the heap implementation
kernel, luna: Move Spinlock.h to luna
Option: Use __builtin_launder to ensure that the compiler doesn't label this as UB
SharedPtr: Implement make_shared using adopt_shared
SharedPtr: Delete ptr on failure in all adopt_shared* functions
2023-02-25 17:09:03 +01:00
de04c094e7
x86_64: Skip enabling WP for now until I find how to check for its availability 2023-01-23 20:06:45 +01:00
631cdd0204
x86_64/CPU: Skip null instruction pointers on stack trace generation
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-16 20:44:45 +01:00
87a4bc91d8
arch/x86_64: Nicer display for page faults that shows a human-readable version of the error code 2023-01-06 17:31:22 +01:00
fd8a0175d9
Add a syscall infrastructure (our baby program can print to the console now!)
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-05 22:39:56 +01:00
0aac6c888d
x86_64: Basic exit() syscall!
User processes need to do something, amirite?
2023-01-05 21:53:48 +01:00
5854e5e530
Add newlines at end-of-file 2023-01-02 13:07:29 +01:00
7952d1d8a0
x86_64: Add basic keyboard support with an ASYNC DRIVER
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-26 19:59:18 +01:00
0054777e7d
x86_64: Warn if NX is not supported 2022-12-26 12:11:10 +01:00