You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(libkernel): implement sigpending and sigsuspend - #4541
Carries pushkarreddyy's ready branch from #3253 rebased onto main with authorship intact.
Titles cataloged in #1578 and POSIX homebrew ports require signal set inspection and suspension exports: sigpending (NID hpoDTzy9Yy0) and sigsuspend (NID KZ-4qlqlpmo). While _sigprocmask, sigaction, and sigaltstack are present, sigpending and sigsuspend were absent in libkernel.
sigpending_nid_postfix: checks pointer for null (EFAULT 14); clears returned signal set (as no asynchronous pending signals queue is maintained); preserves guest errno.
sigsuspend_nid_postfix: checks mask pointer for null (EFAULT 14); names the mask in NotImplemented_nid_no_patch.
Technical debt documented in TechnicalDebt.md.
Tested
Extended core/libs/tests/GuestSignals.cpp unit test suite covering null pointer rejection, sentinel errno preservation, and NotImplemented_nid_no_patch throw.
python tools/check_conventions.py --base origin/main passed cleanly with 0 errors.
Checklist
Based on current main; no other open PR implements the same functions
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
Hi @jagrat04, thank you for carrying! I had already reopened, rebased, and addressed review feedback (naming the mask in sigsuspend, documenting Dispatch drop semantics in TechnicalDebt.md, MinGW GCC fixes) in #4383 earlier today. Since #4383 is active and passing all CI checks, could you please close #4541 to resolve the duplicate PR overlap? Thank you!
Windows test: head d74a08338 merged onto current main2a5eca11c (clean merge, no conflicts). Windows 10, MinGW GCC (WinLibs), Ninja Release, -j2: full build 0 errors; ctest with the filter guest_signal: guest_signals passed, guest_signal_sets passed (2 test(s), 0 failed); python tools/check_conventions.py --base upstream/main passed. I did not run the new tests against main without the change.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Fixes #3253. Refs #1578.
Carries pushkarreddyy's ready branch from #3253 rebased onto
mainwith authorship intact.Titles cataloged in #1578 and POSIX homebrew ports require signal set inspection and suspension exports:
sigpending(NIDhpoDTzy9Yy0) andsigsuspend(NIDKZ-4qlqlpmo). While_sigprocmask,sigaction, andsigaltstackare present,sigpendingandsigsuspendwere absent inlibkernel.sigpending_nid_postfix: checks pointer for null (EFAULT14); clears returned signal set (as no asynchronous pending signals queue is maintained); preserves guest errno.sigsuspend_nid_postfix: checks mask pointer for null (EFAULT14); names the mask inNotImplemented_nid_no_patch.TechnicalDebt.md.Tested
core/libs/tests/GuestSignals.cppunit test suite covering null pointer rejection, sentinel errno preservation, andNotImplemented_nid_no_patchthrow.python tools/check_conventions.py --base origin/mainpassed cleanly with 0 errors.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)