* kernel: apply clang-format to pthread.cpp
Output of the repository's pre-commit clang-format hook (v22.1.3) on
this file; no code change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* kernel: fix the macOS build of host thread naming
199d0a9d (#1106) names guest threads on the host with the two-argument
glibc pthread_setname_np(thread, name). KYTY_PLATFORM is
KYTY_PLATFORM_LINUX on macOS too, so the macOS job now fails with "no
matching function for call to 'pthread_setname_np'": Apple's version
takes only the name and renames the calling thread. This code already
runs on the new thread itself (it passes pthread_self()), so use the
one-argument form on Apple with Apple's 63-character limit and keep the
Linux call unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Remove formatting
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: nmzik <Nmzik@mail.ru>
PthreadCreate carries a guest thread name, but RunThread never handed it to
the host, so every guest thread showed up as the same generic host thread
name in core dumps, perf samples and htop.
Call pthread_setname_np() on Linux so host-side diagnostics can attribute
work to the guest thread that caused it.
Preserve native Windows paths for filesystem operations, command-line options,
and game icons. Complete Unicode handling in recursive file listings and file
logging, restore unmounting by host directory, and extend regression coverage.
Original implementation by Augusto Domingos (@AghastyGD); retain all five of
his PR commits and include the reviewed follow-up fixes.
Closes#714
Co-authored-by: Augusto Domingos <augustodomingosvasco@gmail.com>
When CreateFileMapping cannot reserve the guest backing store the log only
carries the raw Win32 error, which gives no clue that the paging file is the
thing to change. Print the size that was asked for and say so directly when the
failure is ERROR_NO_SYSTEM_RESOURCES or ERROR_COMMITMENT_LIMIT.
* kernel: do not release a waiter on a zero-count syncOnAddress wake
sceKernelSyncOnAddressWake with a count of 0 must release no waiters. On
Linux it released exactly one.
WakeLinux passes the count straight to FUTEX_WAKE, which does not treat 0
as "wake nobody": the kernel's wake loop tests `if (++ret >= nr_wake) break`
after waking a waiter, so any waiter present is released before the loop can
break. A standalone futex program confirms it -- FUTEX_WAKE with val = 0
returns 1, and the waiter observes its wait return 0 with the word unchanged.
WakePortable already short-circuits count == 0, so the two backends of the
same ABI disagreed, with only the Linux one wrong.
TestWakeZeroIsNoOp in SyncOnAddressTests covers exactly this and fails on
Linux without the fix (15 consecutive failures on the assertion "zero-count
wake releases no waiters"); with the fix the suite passes 15 consecutive runs.
* kernel: shorten zero-count futex comment
---------
Co-authored-by: nmzik <Nmzik@mail.ru>