Each Windows AIO request is an overlapped ReadFile/WriteFile at the request's offset, which on a synchronous handle also moves the descriptor's file pointer; on the console AIO transfers leave it alone. The requests now go through the positioned path sceKernelPread and sceKernelPwrite use (NativePositioned in Stdio.cpp, exposed as NativePositioned_nid_no_patch), which restores the pointer afterwards. Negative offsets still fail with EINVAL before the transfer. GuestAio sets the offset to 2 before a write batch and checks it is still 2 after. TechnicalDebt records that a concurrent read or write on the same descriptor can see the moved pointer in between, as for the pread family. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UTjpbMX7BUFMZZaxJE98zV |
||
|---|---|---|
| .. | ||
| ARCHITECTURE.md | ||
| BUILD.md | ||
| CONVENTIONS.md | ||
| HW_ORACLE.md | ||
| PROGRESS.md | ||
| TechnicalDebt.md | ||