4lDO2 bdc925d275 Use GS for TLS!
Previously, the kernel used the regular FS segment for Thread-Local
Storage. The problem however, is that userspace code also uses FS for
TLS, meaning that the kernel would have to switch the FS segment between
user and kernel, _upon every syscall_. This is obviously suboptimal for
performance (especially with fast syscalls such as futex, nanosleep, or
yield).

I had to search LLVM for hours, just to find out that the insertion of
the memory load with FS was actually done in the linker, so I added a
flag for that.

I haven't done any proper benchmarking, but the boot process seems to
have gotten much faster!
2021-02-17 14:44:45 +01:00
2021-01-12 19:59:05 -07:00
2020-11-27 16:49:39 +00:00
2021-02-17 14:44:45 +01:00
2021-02-14 13:45:03 -07:00
2021-01-12 19:57:07 -07:00
2017-07-26 07:44:24 -06:00
2020-11-27 16:49:39 +00:00
2021-02-14 13:45:03 -07:00
2021-02-14 13:45:03 -07:00
2019-10-06 11:15:01 -06:00
2017-09-26 12:57:43 -06:00
2017-10-28 02:42:08 +02:00

kernel

Redox OS Microkernel

MIT licensed docs

Debugging the redox kernel

Running qemu with the -s flag will set up qemu to listen on port 1234 for a gdb client to connect to it. To debug the redox kernel run.

make qemu gdb=yes

This will start a VM with and listen on port 1234 for a gdb or lldb client.

gdb

If you are going to use gdb, run the following to load debug symbols and connect to your running kernel.

(gdb) symbol-file build/kernel.sym
(gdb) target remote localhost:1234

lldb

If you are going to use lldb, run the following to start debugging.

(lldb) target create -s build/kernel.sym build/kernel
(lldb) gdb-remote localhost:1234

Debugging

After connecting to your kernel you can set some interesting breakpoints and continue the process. See your debuggers man page for more information on useful commands to run.

S
Description
RedBear Operating System, based on RedoxOS. Licenced under MIT license.
https://redbearos.org
Readme MIT 17 GiB
Languages
Rust 98.8%
Assembly 0.6%
Linker Script 0.5%
Makefile 0.1%