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-arch and Claude 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