Commit Graph
9148 Commits
Author SHA1 Message Date
Yunus Shaikh 0d0abe09c1 fix(libSceSaveData): start the event delivery thread at the first registration
sceSaveDataInitialize3 started the callback delivery thread for every
title that initializes save data, though nearly none register a
callback, and could throw there if scePthreadCreate failed. The thread
now starts at the first successful sceSaveDataRegisterEventCallback of
an initialization, under the calling, g_slots_mutex and callbacks.mutex
locks that registration already takes, so a title that never registers
gets no thread and sceSaveDataInitialize3 is again only the count.
A replacing registration, one from inside a callback and one after an
unregister reuse the running thread; a refused one starts nothing.

The last sceSaveDataTerminate still takes the worker out under
g_slots_mutex and joins it outside the lock, and only when one was
started, so a session that registers between that terminate's detach
and its join starts its own thread.

The tests run two sessions with no registration, and on Linux count the
process's threads to check that Initialize3 and a refused registration
start none, that the first registration starts one and later ones reuse
it, and that the final terminate joins it.
2026-10-30 19:39:06 +00:00
Yunus Shaikh 629477b800 feat(libSceSaveData): deliver backup completions to a registered event callback
sceSaveDataRegisterEventCallback and sceSaveDataUnregisterEventCallback
were parameterless declarations that threw. They now follow shadPS4
#5226: registering before initialization is NOT_INITIALIZED, a null
callback is PARAMETER, a second registration replaces the callback and
its userdata, and unregistering needs no initialization.

Every backup completion that queues an event for
sceSaveDataGetEventResult, type 2 from sceSaveDataBackup and type 1 from
sceSaveDataUmountWithBackup, is queued for polling first and then handed
to the callback registered at that moment. A library thread delivers it:
sceSaveDataInitialize3 starts it with scePthreadCreate, as
libSceUsbStorage starts its monitor, so the callback runs on a guest
thread, and the last sceSaveDataTerminate joins it. Unregistering waits
for a running callback and drops completions not yet delivered, and a
terminate from inside the callback returns BUSY instead of joining its
own thread, as shadPS4 does.

guest_savedata_event_callback covers the errors, both event types, the
delivering thread, unregistration, replacement, a terminate from inside
the callback and an idle terminate followed by a restart.
2026-10-30 09:57:33 +00:00
Yunus Shaikh 46c8ff27a6 Merge main into feat/savedata-backup-progress-sourced
# Conflicts:
#	core/libs/tests/GuestSaveDataMountStatus.cpp
#	docs/dev/debt/libSceSaveData.native.md
2026-10-29 22:05:12 -07:00
Adrià 8c8b998620 Merge pull request #12957 from zaryabzip/feat/nptrophy-dbg-calls
feat(libSceNpTrophy): return 0x80551692 from the system debug calls as firmware 13.42 does
2026-10-30 05:52:59 +01:00
Adrià 902c6ebfe9 Merge pull request #12111 from wanderingbug/cursor/upstream-macos-unwind-e22f
fix(libc): walk the Mach-O compact unwind index
2026-10-30 05:52:53 +01:00
Adrià ad9001f9d2 Merge pull request #12865 from heditrigui/feat/libkernel-posix-madvise
feat(libkernel): implement posix_madvise
2026-10-30 05:52:23 +01:00
Adrià b48afc66fb Merge pull request #12845 from heditrigui/feat/libc-qsort-r
feat(libc): implement qsort_r
2026-10-30 05:52:07 +01:00
Adrià 89afb27d02 Merge pull request #12837 from ntamas94/docs/npwebapi-method-after-delete
docs(libSceNpWebApi): record the method-after-DELETE check as measured at SDK 5.05
2026-10-30 05:51:54 +01:00
Adrià 4628011bc8 Merge pull request #12727 from XairRrR/fix-audioout-context-handles
fix(libSceAudioOut): reject AudioOut2 context handles that are not live contexts
2026-10-30 05:51:47 +01:00
Adrià c1c91acdbc Merge pull request #12723 from XairRrR/fix-libscevideodec-deep-pictures
fix(libSceVideodec): throw for decoded pictures deeper than 8 bits
2026-10-30 05:51:41 +01:00
Adrià 84e114e4eb Merge pull request #12715 from MarcZX10/feat/log-to-file
feat(libc): copy the runtime log into a file with ANYPS5_LOG_FILE
2026-10-30 05:51:34 +01:00
Adrià 0d62a3e0db Merge pull request #12699 from SnekPolylepis/feat/savedata-mounted-count-and-lifecycle
feat(libSceSaveData): add provisional abort and clear progress stubs
2026-10-30 05:51:21 +01:00
Adrià a8d9d375ac Merge pull request #13060 from bunbeans2-arch/docs/7120-anon-flexible
docs(libkernel): record that anonymous mmap is not charged to the flexible budget
2026-10-30 05:51:10 +01:00
Dean 422f96b3a9 Merge pull request #13001 from frankea/feat/acm-fft-ifft-encoding
feat(libSceAcm): encode sceAcm_FFT and sceAcm_IFFT jobs as firmware 13.40 does
2026-10-30 17:22:33 +13:00
Dean 3d2d264392 Merge pull request #12916 from Tehshortbus/feat/multi-target-merge
feat(agc): merge a draw into more than one unclamped normalized color target
2026-10-30 16:49:46 +13:00
Adrià acf46d4ff8 Merge pull request #12577 from iAbdulrrahman/feat/libkernel-sys-is-ps4-process
feat(libkernel_sys): implement sceKernelIsPs4Process query
2026-10-30 03:03:26 +01:00
Yunus Shaikh 22291cddd8 Merge main into feat/savedata-backup-progress-sourced
# Conflicts:
#	core/libs/tests/GuestSaveDataMountStatus.cpp
#	docs/dev/debt/libSceSaveData.native.md
2026-10-29 18:59:33 -07:00
Adrià 91a69952c1 Merge pull request #12692 from Ninot1Quyi/feat/icu-converter-callbacks
feat(libSceIcu): implement converter stop and skip callbacks
2026-10-30 02:52:24 +01:00
Adrià 0c9c5db748 Merge pull request #12690 from MarcZX10/feat/host-system-report
feat(agc): host system report and an actionable missing-Vulkan-feature message
2026-10-30 02:52:18 +01:00
Adrià f67988f8e8 Merge pull request #12644 from slopgobblercobbler/fix/savedata-backup-dir-name-validation
fix(libSceSaveData.native): validate directory name in sceSaveDataBackup
2026-10-30 02:52:13 +01:00
Adrià 90c9759d12 Merge pull request #10581 from ashwin280802/fix/agc-single-sample-alpha-to-coverage
fix(agc): reject unmeasured single-sample dithered alpha-to-coverage
2026-10-30 02:45:21 +01:00
Adrià d0cf19b2cb Merge pull request #12233 from beardsciences/fix/nvidia-mesh-window-buffer
fix(shader): keep mesh register windows out of local memory on NVIDIA
2026-10-30 02:31:36 +01:00
Adrià ec709cede3 Merge pull request #12436 from milescoviello/fix/vm-loadavg
fix(libkernel): answer vm.loadavg with the host's load averages
2026-10-30 02:31:30 +01:00
Adrià 365f857609 Merge pull request #12427 from simnJS/feat/kernel-is-neo-mode
feat(libkernel_sys): answer sceKernelIsNeoMode from the param.sfo Neo-mode attribute
2026-10-30 02:30:27 +01:00
Adrià aa0ce6beb4 Merge pull request #13024 from wrocketdev/docs/homebrew-own-log
docs(game-testing): point to the log that ps5-homebrew-ui titles write in their own storage
2026-10-30 02:26:54 +01:00
Adrià 086adee5e3 Merge pull request #12379 from MarcZX10/feat/msgdialog-overlay
feat(overlay): show PS5 system dialogs as real PC dialogs
2026-10-30 02:04:23 +01:00
Adrià c9f87549ef Merge pull request #12531 from olegon85/test-kernel-apr-prefixed-batch
test(libkernel): cover the prefixed APR batch resolve without sizes
2026-10-30 02:04:17 +01:00
Adrià 28b490ea5c Merge pull request #12296 from JJenkx/windows/kernel-shm-mmap-checks
fix(libkernel): map Windows shared memory with the regular file checks
2026-10-30 02:04:04 +01:00
Adrià 066239634c Merge pull request #11941 from akkadbakkad89/npent-abort-delete
fix(libSceNpEntitlementAccess): make abort and delete request idempotent
2026-10-30 02:03:57 +01:00
Adrià b7f9a4ee9f Merge pull request #12402 from kyon-eth/feat/resource-arbitrator-1360-inventory
feat(libSceResourceArbitrator): declare 14 additional callable exports
2026-10-30 02:02:05 +01:00
Adrià d85a6745c2 Merge pull request #12368 from kyon-eth/feat/kernel-sys-1360-inventory
feat(libkernel_sys): declare 328 missing callable exports
2026-10-30 02:01:59 +01:00
Adrià f9a8813b11 Merge pull request #12179 from p3n1cillin/claude/kernel-executable-module-handle
feat(libkernel): add sceKernelGetExecutableModuleHandle
2026-10-30 02:01:01 +01:00
Adrià 18bf374028 Merge pull request #12178 from Henryisdjfunkyho/fix/libc-nearbyintf-current
fix(libc): raise inexact for nearbyintf
2026-10-30 02:00:49 +01:00
Adrià f6fddd60d8 Merge pull request #9243 from fisherjoey/perf/draw-cache-indirect-admission
perf(agc): cache CPU-path indirect draws behind APS5_DRAW_CACHE_INDIRECT
2026-10-30 01:51:25 +01:00
Adrià 76fd1c09e9 Merge pull request #11270 from AlexFigas/fix/libc-llog-dinkumware
fix(libc): compute _LLog with the bundled libc.prx's Dinkumware code
2026-10-30 01:40:35 +01:00
Adrià 401e4babaa Merge pull request #11075 from slopgobblercobbler/fix/agc-pipeline-cache-header-validation
fix(agc): validate pipeline cache header format and empty cache paths
2026-10-30 01:38:51 +01:00
Adrià 02e89573e5 Merge pull request #11347 from edubox/feat/ngs2-custom-submixer-channels
feat(ngs2): accept custom submixers with more than eight channels
2026-10-30 01:20:55 +01:00
Adrià 4725feb152 Merge pull request #11431 from p3n1cillin/claude/pthread-getaffinity-set-size
fix(libkernel): answer pthread_getaffinity_np for the console's 8- and 16-byte sets
2026-10-30 01:20:44 +01:00
Adrià 96613bba67 Merge pull request #12060 from Ragbie/fix/windows-directory-flock
fix(libkernel): lock directories with flock on Windows as FreeBSD does
2026-10-30 01:04:03 +01:00
Adrià a7febdb4b3 Merge pull request #12369 from kyon-eth/feat/libressl3-1360-inventory
feat(libSceLibreSsl3): complete callable declarations and parent forwarding
2026-10-30 00:59:06 +01:00
bunbeans2-archandClaude Opus 5.5 fabc873701 docs(libkernel): record that anonymous mmap is not charged to the flexible budget
A plain MAP_PRIVATE | MAP_ANON map is placed through DoMapAnon and is
not added to the flexible ranges, so it neither lowers
sceKernelAvailableFlexibleMemorySize nor is refused for the budget.
Whether a PS5 charges it is not measured; shadPS4 charges it on the PS4.
The debt entry records the gap left open in #7120.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 19:57:34 -04:00
Dean d65bff2679 Merge pull request #11639 from AlexFigas/feat/npcppwebapi-userprofile-parameter-lifecycles
feat(libSceNpCppWebApi): track the UserProfile, ProfanityFilter and CommunicationRestrictionStatus parameter lifecycles as the module does
2026-10-30 12:50:14 +13:00
Dean 3d1b1c30e8 Merge pull request #12074 from mehmetbayoglu/fix/agc-import-yield-mirrorable-pr
fix(agc): let heap mirrors replace host imports when the import budget is full
2026-10-30 12:20:39 +13:00
Dean 341cf8beee Merge pull request #6498 from Amoenus/codex/fix-msaa-buffer-alias-mainfa
fix(agc): refuse buffer aliases of native MSAA targets
2026-10-30 12:19:53 +13:00
Adrià 5e216d6aed Merge pull request #10927 from edubox/feat/libc-throw-bad-array-new-length
feat(libc): implement std::_Throw(const std::bad_array_new_length&)
2026-10-30 00:18:44 +01:00
Adrià f46f453a56 Merge pull request #12724 from Gonic0/fix/shader-single-lane-elected-max
fix(shader): give one-lane waves an elected atomic max per lane
2026-10-30 00:18:15 +01:00
Adrià 202037c3d7 Merge pull request #12691 from JJenkx/codex/libc-bsearch-zero-stride-20261029
fix(libc): allow zero-stride bsearch_s as bundled libc does
2026-10-30 00:18:02 +01:00
Adrià 7a225bb303 Merge pull request #12686 from MarcZX10/feat/pad-rumble-intensity
feat(libSceVideoOut): add ANYPS5_RUMBLE to scale or turn off host controller vibration
2026-10-29 23:46:17 +01:00
Adrià 2ac080f49f Merge pull request #12588 from MarcZX10/fix/progress-percent-unit
fix(tools): print the per-library progress change in % like the headline
2026-10-29 23:46:05 +01:00
Adrià 195b1889a6 Merge pull request #12645 from slopgobblercobbler/fix/agc-resource-registration-and-rendering-wait
fix(agc): validate rendering wait buffer and expand resource registration tests
2026-10-29 23:28:27 +01:00