mirror of
https://github.com/RGBCube/serenity
synced 2026-01-15 00:01:00 +00:00
This is dirty but pretty cool! If we have a pending, unmasked signal for a process that's blocked inside the kernel, we set up alternate stacks for that process and unblock it to execute the signal handler. A slightly different return trampoline is used here: since we need to get back into the kernel, a dedicated syscall is used (sys$sigreturn.) This restores the TSS contents of the process to the state it was in while we were originally blocking in the kernel. NOTE: There's currently only one "kernel resume TSS" so signal nesting definitely won't work. |
||
|---|---|---|
| .. | ||
| .gitignore | ||
| cat.cpp | ||
| clear.cpp | ||
| date.cpp | ||
| false.cpp | ||
| ft.cpp | ||
| ft2.cpp | ||
| hostname.cpp | ||
| id.cpp | ||
| kill.cpp | ||
| ls.cpp | ||
| Makefile | ||
| mm.cpp | ||
| ps.cpp | ||
| sh.cpp | ||
| sleep.cpp | ||
| strsignal.cpp | ||
| true.cpp | ||
| tst.cpp | ||
| tty.cpp | ||
| uname.cpp | ||