Commit Graph

274 Commits

Author SHA1 Message Date
Dean a89f95f4f8
Merge pull request #732 from alfalfa-star/fix/prx-runpath
fix(libs): keep a $ORIGIN runpath in the patched prx libraries
2026-10-07 16:45:29 +13:00
Dean 0c952fe574
Merge pull request #994 from CnRJay/fix/map-no-overwrite-enomem
fix(libkernel): refuse fixed no-overwrite mappings over live memory with ENOMEM
2026-10-07 15:31:12 +13:00
Dean f6f47bf1de
Merge pull request #880 from adriadam10/feat/kernel-mtypeprotect-type
feat(kernel): apply the memory type in sceKernelMtypeprotect
2026-10-07 15:28:25 +13:00
Dean 1d773dad2e
Merge pull request #722 from alfalfa-star/feat/libkernel-rtld-thread-atexit
feat(libkernel): implement the rtld thread atexit reference count
2026-10-07 15:27:44 +13:00
Dean fc5341aca2
Merge pull request #872 from Fishybeing/fix/guard-nominmax
build(windows): guard NOMINMAX before including windows.h
2026-10-07 15:24:47 +13:00
Dean fde401d41f
Merge pull request #992 from CnRJay/feat/ppsa23566-missing-exports
feat(libs): declare the exports PPSA23566 imports that no library provides
2026-10-07 13:02:56 +13:00
Adrià ab9437e34d
feat(libkernel): implement scePthreadTestcancel and pthread_testcancel (#834) 2026-10-07 11:43:32 +13:00
Dean 23ba389799
Merge pull request #993 from CnRJay/fix/mutexattr-settype-einval
fix(libkernel): return EINVAL for unknown mutex attribute types
2026-10-07 11:43:11 +13:00
Chad df98b8899e feat(libs): name the PPSA23566 stubs from the shadPS4 NID list and implement sleep
20 of the 31 NIDs have names in shadPS4's aerolib list. They are declared
under those names; POSIX sleep is implemented. The NpPartner001 and Psml
MFSR2 exports stay unnamed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 17:28:39 -05:00
Dean 97a6604f81
Merge pull request #883 from Fishybeing/fix/memorypool-header-guard
fix(libkernel): correct the MemoryPool.hpp include guard
2026-10-07 11:05:38 +13:00
Chad e9c8664d43 fix(libkernel): refuse fixed no-overwrite mappings over live memory with ENOMEM
MAP_FIXED | MAP_NO_OVERWRITE over a range that already holds an
allocation fails with ENOMEM and leaves the mapping in place, as in
fpPS4's TVirtualManager.check_fixed. UFC 6 (PPSA23566) relies on it to
probe for a free address and aborted on the throw.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 17:04:06 -05:00
Chad 69973800a7 fix(libkernel): return EINVAL for unknown mutex attribute types
UFC 6 (PPSA23566) passes type 0 to pthread_mutexattr_settype during
startup. libkernel rejects it with EINVAL and leaves the attribute
unchanged, as fpPS4's decompiled body does, instead of aborting.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 17:04:06 -05:00
Chad 7cbf45b660 feat(libs): declare the exports PPSA23566 imports that no library provides
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 17:04:05 -05:00
CnR 7e3dcbc27e
feat(libkernel): implement sceKernelReleaseFlexibleMemory (#952)
* feat(libkernel): implement sceKernelReleaseFlexibleMemory

Unmaps the range through sceKernelMunmap, which returns its pages to
the flexible memory budget, as fpPS4 and prosper do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(libkernel): keep the flexible memory release check apart from the batch map checks

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 10:20:07 +13:00
Dean 0056fc5027
Merge pull request #793 from CnRJay/feat/barrierattr-process-shared
feat(libkernel): accept PTHREAD_PROCESS_SHARED barrier attributes
2026-10-07 10:18:43 +13:00
Dean 2b049e3ef6
Merge pull request #879 from adriadam10/feat/kernel-batchmap-invalid-entry
feat(kernel): reject invalid sceKernelBatchMap2 entries with EINVAL
2026-10-07 10:12:23 +13:00
Dean 465c8f6b81
Merge pull request #878 from adriadam10/feat/kernel-adaptive-mutex-initializer
feat(kernel): lazily initialize the adaptive static mutex initializer
2026-10-07 10:11:42 +13:00
Dean 37a1e75f2c
Merge pull request #877 from adriadam10/feat/kernel-getrusage-thread
feat(kernel): support getrusage RUSAGE_THREAD on Linux
2026-10-07 10:11:00 +13:00
Dean 906b7f8d31
Merge pull request #724 from merwie/feat/kernel-exception-handler-registration
feat(libkernel): record exception handlers
2026-10-07 10:02:52 +13:00
Dean 2d0bbbfb4a
Merge pull request #702 from merwie/feat/kernel-is-stack
feat(libkernel): implement sceKernelIsStack
2026-10-07 10:00:46 +13:00
Chad ac91853ae1 Merge remote-tracking branch 'upstream/main' into feat/barrierattr-process-shared 2026-10-06 13:40:57 -05:00
Fishybeing 5f1c45c223 fix(libkernel): correct the MemoryPool.hpp include guard
The guard tested CORE_LIBS_PRX_LIBKERNEL_... but defined CORE_LIBS_PRX_LINKERNEL_..., so it never took effect and GCC reports -Wheader-guard.
2026-10-06 14:57:51 +02:00
Fishybeing 5a04d3cc9e build(windows): guard NOMINMAX before including windows.h
Four sources defined NOMINMAX unconditionally, which redefines the macro the build already passes and warns on every MinGW build. Use the #ifndef guard the rest of the tree uses.
2026-10-06 14:57:48 +02:00
Adrià Franch 109f120595 feat(kernel): apply the memory type in sceKernelMtypeprotect
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 14:32:47 +02:00
Adrià Franch ca6557aed1 feat(kernel): reject invalid sceKernelBatchMap2 entries with EINVAL
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 14:27:48 +02:00
Adrià Franch fe557fb0e2 feat(kernel): lazily initialize the adaptive static mutex initializer
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 14:23:25 +02:00
Adrià Franch 1311e6e455 feat(kernel): support getrusage RUSAGE_THREAD on Linux
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 14:19:40 +02:00
Dean 5895ea721a
Merge pull request #814 from adriadam10/feat/kernel-aio-batch
feat(libkernel): Aio batch submit, wait, cancel and delete
2026-10-06 22:34:58 +13:00
Dean 5d6ee4669a
Merge pull request #808 from adriadam10/feat/kernel-get-direct-memory-type
feat(libkernel): implement sceKernelGetDirectMemoryType
2026-10-06 22:32:51 +13:00
Dean 88ca57d7af
Merge pull request #806 from adriadam10/feat/kernel-vectored-io
feat(libkernel): sceKernelReadv, Writev, Preadv and Pwritev
2026-10-06 22:32:09 +13:00
Dean 6f3d485fca
Merge pull request #723 from alfalfa-star/feat/libkernel-module-info-from-addr
feat(libkernel): implement sceKernelGetModuleInfoFromAddr
2026-10-06 22:29:00 +13:00
Dean 229b1287b4
Merge pull request #721 from merwie/feat/kernel-checked-release-direct-memory
feat(libkernel): implement sceKernelCheckedReleaseDirectMemory
2026-10-06 22:28:18 +13:00
Dean 1b6a7bae64
Merge pull request #700 from merwie/fix/kernel-virtual-query-reserved
fix(libkernel): report reserved virtual ranges in sceKernelVirtualQuery
2026-10-06 22:27:36 +13:00
Merijn 17332edb44 Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/kernel-is-stack
# Conflicts:
#	core/libs/prx/libkernel/Pthread/src/Thread.cpp
2026-10-06 09:58:27 +02:00
Merijn deddb1092e Merge branch 'main' of https://github.com/boykopovar/AnyPS5 into feat/kernel-exception-handler-registration
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-06 09:54:05 +02:00
alfalfa-star 5e009d75ec feat(libkernel): implement the rtld thread atexit reference count
A title's libc.prx passes the dso address of __cxa_thread_atexit to
_sceKernelRtldThreadAtexitIncrement and fails the registration when it
returns nonzero. Increment takes a reference on the loaded image that
contains the address, so it stays mapped while thread_local destructors
are pending, and Decrement releases one. An address outside every
loaded image and a Decrement without a reference throw.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 08:36:23 +02:00
alfalfa-star 57466b6267 test(libs): keep the fixture's DT_NEEDED entries under --as-needed
Ubuntu's GCC links with --as-needed by default, and the fixture uses
nothing from libc or libstdc++, so it ended up with no DT_NEEDED entry
and the dynamic string test had no needed names to check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 08:35:25 +02:00
Adrià Franch 0f2699eef4 feat(libkernel): Aio batch submit, wait, cancel and delete
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 08:11:07 +02:00
Adrià Franch 6d2713cbdd feat(libkernel): implement sceKernelGetDirectMemoryType
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 07:44:18 +02:00
Adrià Franch ab98cd7f4a feat(libkernel): sceKernelReadv, Writev, Preadv and Pwritev
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 07:33:51 +02:00
raghav314 670ffb9da3 feat(libkernel): implement sceKernelGetAvailableCpumask
Returns the CPU mask threads get by default (DEFAULT_THREAD_AFFINITY,
0x1FFF), the value itself rather than an error code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 09:41:52 +05:30
Dean 0db5bfcf36
Merge pull request #792 from CnRJay/feat/libkernel-sendmsg-recvmsg
feat(libkernel): implement sendmsg and recvmsg
2026-10-06 16:31:19 +13:00
Nicolas Abosch 7789c0a57b feat(libs): implement homebrew libc and kernel runtime exports 2026-10-05 22:40:16 -03:00
Chad 03afdb55bb Merge remote-tracking branch 'upstream/main' into feat/libkernel-sendmsg-recvmsg
# Conflicts:
#	core/libs/prx/libkernel/Unimplemented.cpp
2026-10-05 20:23:13 -05:00
Dean 6136e52110
Merge pull request #785 from NahuelGenchi/feat/kernel-futimes
feat(libkernel): implement futimes
2026-10-06 14:15:34 +13:00
Dean aa22e43932
Merge pull request #784 from NahuelGenchi/feat/kernel-fchmod
feat(libkernel): implement fchmod and sceKernelFchmod
2026-10-06 14:14:52 +13:00
Chad d4b01b72c0 feat(libkernel): accept PTHREAD_PROCESS_SHARED barrier attributes
The PS5 kernel follows FreeBSD 11, whose libthr accepts process-shared
barriers. Guest code runs in a single process, so a process-shared
barrier synchronises the same threads a private one does; the attribute
is stored and reported back by getpshared.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 20:11:20 -05:00
Chad 77550ab731 feat(libkernel): implement sendmsg and recvmsg
Both take the FreeBSD msghdr (48 bytes, iovecs of a pointer and a 64-bit
length) and run on the host sockets: sendmsg gathers the iovecs and sends
through sendto, recvmsg receives into one buffer and scatters it. A
datagram longer than the iovecs is cut and reported with MSG_TRUNC, also
on Windows where recvfrom fails with WSAEMSGSIZE. More than 1024 iovecs
fail with EMSGSIZE. No ancillary data is ever received, so recvmsg
clears msg_controllen; sending control data throws.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 20:10:13 -05:00
Dean cdb2707ad2
Merge pull request #686 from Pouare514/fix/direct-memory-release-clears-mappings
fix(libkernel): drop direct mappings when physical backing is released
2026-10-06 13:28:21 +13:00
Dean 3e9bcee7b9
Merge pull request #756 from CnRJay/feat/amm-prt
feat(libs): implement the AMM PRT commands
2026-10-06 13:17:24 +13:00