Cloudberry Kingdom (PPSA23827, #3177) calls kqueue right after start-up and stopped on the throwing declarations merged with #3337; Palworld's Discord module (PPSA23126, #2648) imports kevent. kqueue reserves a host null-device descriptor in the file descriptor space and registers it as an event queue that reports each ready event once per call and moves level-triggered ones behind the others, as kqueue_scan does. close and sceKernelClose close the queue and drop the descriptor's events from every queue, dup2 drops them for the target, and dup/dup2 of a kqueue throw, so a reused descriptor number is never read as a stale kqueue. kevent follows FreeBSD 11 kern_event.c (release/11.0.1 34bd3475): kqueue_kevent for the changelist (filter 0 skipped, EV_SYSFLAGS cleared, EV_ERROR receipts with the errno in data, EV_RECEIPT, the early return when nevents is exhausted), kqueue_register for EV_ADD, EV_DELETE, EV_ENABLE, EBADF, ENOENT and EINVAL, kqueue_scan for the timeout (EINVAL for a bad timespec, zero polls, above INT32_MAX waits forever) and filt_timerattach, filt_usertouch for the timer and user filters. Read and write events reuse the guest socket poll of sceKernelAddReadEvent/WriteEvent. Throws: other filters, EV_DISABLE, EV_DISPATCH, EV_FORCEONESHOT, NOTE_LOWAT, EV_CLEAR on a socket, read/write events on non-socket descriptors or another kqueue, changes to an existing timer (11.0 and 11.4 differ), a NOTE_NSECONDS fraction above one second and a negative nevents. Recorded in TechnicalDebt. Test guest_kqueue covers creation and close, timers, a user event triggered from another thread, read and write events on a socket pair, EV_ERROR receipts, the timeout and the error cases. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> |
||
|---|---|---|
| .github | ||
| 3rdparty | ||
| cmake | ||
| core | ||
| docs | ||
| tools | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
README.md
About
Tool for automatic executables porting to Linux and Windows.
Includes a relinker that converts executable to the target system's native format and implementations of system prx libraries suitable for dynamic linking. No emulation or separate runtime process.
Usage, Build instructions, Architecture, Technical debt of the project, code style conventions, contributing
Status
* System libraries: percentage of the functions known to the project so far (declared in core/libs/prx), not of every PS5 system function. The total grows as more functions are declared.
Unsupported or unexpected states strictly throw std::runtime_error. what() is printed to stderr and the process terminates.
The shader recompiler successfully produces SPIR-V (validated via Spirv-Tools when built with ANYPS5_ENABLE_SPIRV_TOOLS).
Compatibility
Per-game progress (stage reached, open blockers, libraries and GPU coverage) is tracked on the blocker map, a community project built from public GitHub data (source). Test reports go in the Game bring-up discussions, one thread per title.
Input mapping
SDL-mapped game controllers are supported, including analog sticks and triggers. Keyboard and mouse controls can be configured with an anyps5-input.ini file. See input mapping for the supported devices and configuration format.
Disclaimer
This project is intended for interoperability, research, preservation, and compatibility purposes. It does not include, distribute, or require copyrighted software, firmware, cryptographic keys, or proprietary libraries. Users are responsible for ensuring that any binaries used with this project are obtained and used in accordance with applicable laws and their respective license terms.
License
This project is licensed under the GNU General Public License version 2 only.