mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-01 05:39:11 +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
Notes:
sideshowbarker
2024-07-17 09:35:21 +09:00
Author: https://github.com/timschumi
Commit: cf0ad3715e
Pull-request: https://github.com/SerenityOS/serenity/pull/13971
Reviewed-by: https://github.com/ADKaster ✅
Reviewed-by: https://github.com/Hendiadyoin1
Reviewed-by: https://github.com/bgianfo ✅
Reviewed-by: https://github.com/kleinesfilmroellchen
Reviewed-by: https://github.com/linusg
4 changed files with 28 additions and 1 deletions
|
@ -334,6 +334,7 @@ public:
|
|||
ErrorOr<FlatPtr> sys$sigaltstack(Userspace<stack_t const*> ss, Userspace<stack_t*> old_ss);
|
||||
ErrorOr<FlatPtr> sys$sigprocmask(int how, Userspace<sigset_t const*> set, Userspace<sigset_t*> old_set);
|
||||
ErrorOr<FlatPtr> sys$sigpending(Userspace<sigset_t*>);
|
||||
ErrorOr<FlatPtr> sys$sigsuspend(Userspace<sigset_t const*>);
|
||||
ErrorOr<FlatPtr> sys$sigtimedwait(Userspace<sigset_t const*>, Userspace<siginfo_t*>, Userspace<timespec const*>);
|
||||
ErrorOr<FlatPtr> sys$getgroups(size_t, Userspace<gid_t*>);
|
||||
ErrorOr<FlatPtr> sys$setgroups(size_t, Userspace<gid_t const*>);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue