AnyPS5/core/libs/prx/libkernel/Pthread/src
VitzS7 28063f1951 feat(libkernel): wait for pending guest signals in the signal waits
Before: raise, kill and pthread_kill delivered a signal at once or failed
with EINVAL, nothing stayed pending, and pause, sigwait, sigwaitinfo and
sigtimedwait called NotImplemented_nid_no_patch.

Now: a process-wide pending set holds signals 1 to 128. A signal raised
while it is blocked stays pending and is delivered when _sigprocmask
unblocks it, taken by sigwait, sigwaitinfo or sigtimedwait, or delivered by
pause, which runs its handler on the calling thread and returns -1 with
EINTR. pthread_kill to another thread leaves the signal pending for
whichever thread waits for it and answers ESRCH for a handle that is not a
live guest thread. sigtimedwait follows FreeBSD's sigtimedwait(2): EAGAIN
on timeout, EINVAL for a tv_nsec outside 0 to 1000000000 while nothing is
pending, and an indefinite wait with a null timeout.
2026-10-12 17:47:33 -03:00
..
Attr.cpp Merge pull request #4153 from hugodearaujo/fix/pthread-attr-errors 2026-10-12 21:41:31 +13:00
Cond.cpp fix(libkernel): return EPERM or EINVAL when a condition wait gets a mutex the caller does not hold 2026-10-11 01:53:12 +02:00
Mutex.cpp fix(libkernel): return the console's errors from the SCE mutex calls 2026-10-11 21:06:55 -03:00
Rwlock.cpp fix(libkernel): destroy rwlocks the way the console does 2026-10-11 19:48:33 -03:00
Sem.cpp feat(libkernel): implement thread cancellation 2026-10-10 11:32:09 +02:00
Thread.cpp feat(libkernel): wait for pending guest signals in the signal waits 2026-10-12 17:47:33 -03:00
Tsd.cpp fix(libkernel): number pthread keys from 1 as FreeBSD libthr does 2026-10-11 22:16:59 +00:00