mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-29 12:15:39 +00:00
The PS5 libkernel exports _accept, _bind, _connect, _getdirentries, _getpeername, _getsockname, _getsockopt, _listen, _recvfrom, _recvmsg, _sendmsg, _sendto, _setsockopt, _sigaction and _sigsuspend (PS5 3.20 export list, DNNDHH/PS5-3.20_Libs b2a77c0 libkernel.c), and main exports none of them, so a title importing one fails at startup. Each now forwards to the export without the underscore, as _close, _ioctl and _nanosleep already do. In FreeBSD 11.4 (8c639945a4) these are libc's plain system call entries: lib/libc/amd64/SYS.h makes bind, getdirentries, getpeername, getsockname, getsockopt, listen and setsockopt one stub under both names, and lib/libc/sys/Makefile.inc gives accept, connect, recvfrom, recvmsg, sendmsg, sendto, sigaction and sigsuspend a separate public name that goes through libthr's interposing table, which adds the cancellation points and the sigaction wrapper. The exports without the underscore have no libthr layer here, so forwarding gives the system call. docs/dev/debt/libkernel.md records what stays unverified: the console is not measured, _sigaction shares the handler table of sigaction, and a null set throws in _sigsuspend as in sigsuspend, where FreeBSD's system call returns EFAULT. guest_underscore_entries calls every new export: a loopback TCP connection, UDP datagrams with scatter, truncation and sender addresses, a directory listing compared with getdirentries, a SIGTERM handler set by _sigaction, and a pending SIGUSR1 that _sigsuspend delivers before returning EINTR with the mask restored. It checks the errors they pass on (EBADF, EINVAL, EFAULT, ENOPROTOOPT, EOPNOTSUPP) and that outputs stay untouched on failure. Co-Authored-By: Claude Opus 5.5 <[email protected]>