Repository navigation
feat(libkernel_sys): implement the scePthread scope, atfork and setconcurrency forms - #9141
Conversation
…currency and msync forms Forward scePthreadBarrier*, scePthreadBarrierattr*, scePthreadGetcpuclockid, scePthreadGetconcurrency and sceKernelMsync to libkernel's POSIX implementations and return POSIX errors as SCE kernel errors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…read-scope-atfork
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Windows run of d6b3846 merged onto Built |
…read-scope-atfork # Conflicts: # core/libs/CMakeLists.txt # core/libs/prx/libkernel_sys/Export.Discovery.cpp # docs/dev/debt/libkernel_sys.md
…nel-sys-pthread-scope-atfork
|
@MarrasFederico the four new One thing blocks it. This branch carries an older copy of #8987 ( Could you rebase onto #8987's current head ( |
|
@oneandonlydean done. The branch now carries #8987's current head
|
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed exact head e8f8e59. The dependent #8987 changes are retained, and the checklist declares that dependency. The four new SCE forms delegate to the existing POSIX providers with SCE errno mapping; tests cover scope state/error preservation, concurrency, and atfork registration order. Local diff whitespace, conventions, registration, and current-main checks pass. The PR reports a Linux full build/focused tests, and an independent Windows build plus repeated barrier/pthread runs; I did not execute those binaries locally. Hosted product jobs are skipped by policy, and console behavior remains documented as unmeasured.
…read-scope-atfork
What
scePthreadAttrGetscope,scePthreadAttrSetscope,scePthreadAtforkandscePthreadSetconcurrencywerelibkernel_sysdiscovery stubs that threw. libkernel already implements their POSIX forms (pthread_attr_getscope,pthread_attr_setscope,pthread_atfork,pthread_setconcurrency). The foursceforms now call them and turn a POSIX error into0x80020000 | errno, as #8987 does for the barrier, cpuclockid and concurrency forms; this builds on itsSceResulthelper.shadPS4 exports
scePthreadAttrGetscope(+7B2AEKKns8) asORBIS(posix_pthread_attr_getscope), the same wrapping. It has no export for the other three. Their names and NIDs (YdZfEZfRnPk,i1kREW2pchs,gdnv6wF6hwI) are in the symbol database, and their signatures follow the same POSIX forms.What they do is libkernel's behaviour:
EINVAL.EINVAL; otherwise the level is stored and read back byscePthreadGetconcurrency.The debt entry records that none of this is measured on a console.
Tested
Ubuntu 26.04.1, kernel 7.0.0-38, GCC 15.2.0, Release, full build with
BUILD_TESTING=ON. Windows was not compiled. No title was run.guest_kernel_sys_pthread, registered next toguest_kernel_sys_barrier(feat(libkernel_sys): implement the scePthreadBarrier, cpuclockid, concurrency and msync forms #8987, now merged):0x80020016without changing it. Null attribute or output pointers return0x80020016.0x80020016and keeps 3. 0 reads back as 0.scecode, or registering the atfork handlers in the wrong order, makes it fail.guest_kernel_sysandguest_kernel_sys_barrierstill pass.tools/check_conventions.py --base origin/mainpasses.tools/pr_overlap.pyfinds no shared export. It reports neighbouring lines indocs/dev/debt/libkernel_sys.mdwith fix(libkernel_sys): return EPERM for unsupported fchown ownership #8457, fix(libkernel_sys): implement fchown #8531, feat(libkernel_sys): implement sceKernelTitleWorkaroundIsEnabled and sceKernelGetProcessType #9040 and feat(libkernel_sys): implement chown, lchown, fchownat and linkat #9103 (fchown, chown and title-workaround calls), and could not compare feat(aot): consolidate native ARM64 compiler, runtime and consumers #5021, which conflicts withmain; none touches these four calls.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)