mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 16:18:12 +00:00
Kernel: Implement sigsuspend
using a SignalBlocker
`sigsuspend` was previously implemented using a poll on an empty set of file descriptors. However, this broke quite a few assumptions in `SelectBlocker`, as it verifies at least one file descriptor to be ready after waking up and as it relies on being notified by the file descriptor. A bare-bones `sigsuspend` may also be implemented by relying on any of the `sigwait` functions, but as `sigsuspend` features several (currently unimplemented) restrictions on how returns work, it is a syscall on its own.
This commit is contained in:
parent
edbffb3c7a
commit
cf0ad3715e
4 changed files with 28 additions and 1 deletions
|
@ -170,6 +170,7 @@ enum class NeedsBigProcessLock {
|
|||
S(sigpending, NeedsBigProcessLock::Yes) \
|
||||
S(sigprocmask, NeedsBigProcessLock::Yes) \
|
||||
S(sigreturn, NeedsBigProcessLock::Yes) \
|
||||
S(sigsuspend, NeedsBigProcessLock::Yes) \
|
||||
S(sigtimedwait, NeedsBigProcessLock::Yes) \
|
||||
S(socket, NeedsBigProcessLock::Yes) \
|
||||
S(socketpair, NeedsBigProcessLock::Yes) \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue