mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-27 00:28:14 +00:00
docs: name shared views as the pages the Windows write watch leaves read-only
CONVENTIONS.md still listed stable resident runs of at least 256 KiB as the pages the write watch can leave read-only between collections on Windows, and pointed at the debt/libc.md entry this PR removes. Resident runs are no longer write-protected. What stays read-only between collections on Windows are the pages of shared views (shared memory, shared file mappings, and direct memory mapped at more than one guest address), which Collect arms; the Windows direct-memory backing entry in debt/libc.md describes the direct-memory case. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
d6e270ea9f
commit
c442afa5d1
1 file changed
+1
-1
@@ -20,7 +20,7 @@ There's no need to add image files to the repository. You can add images to the
|
||||
|
||||
Host code that writes into guest memory through the kernel or a native library must hold a `GuestArena::HostWrite` ([GuestArena.hpp](../../core/libs/prx/libc/include/GuestArena.hpp)) over the destination range for the whole write. This covers file reads (`ReadFile`, `read`, `pread`), socket receives, `DeviceIoControl` and other calls that fill a caller's buffer.
|
||||
|
||||
The write watch can leave guest pages read-only between collections: every watched page on macOS, and stable resident runs of at least 256 KiB on Windows (see the write-watch entries in [debt/libc.md](debt/libc.md)). A kernel-mode write into such a page doesn't fault into the watch. It fails instead, with `EFAULT` on macOS and `ERROR_NOACCESS` on Windows. `HostWrite` opens the pages and makes sure the write is recorded.
|
||||
The write watch can leave guest pages read-only between collections: every watched page on macOS, and on Windows the pages of shared views (shared memory, shared file mappings, and direct memory mapped at more than one guest address), which it tracks by write protection (see the write-watch and Windows direct-memory backing entries in [debt/libc.md](debt/libc.md)). A kernel-mode write into such a page doesn't fault into the watch. It fails instead, with `EFAULT` on macOS and `ERROR_NOACCESS` on Windows. `HostWrite` opens the pages and makes sure the write is recorded.
|
||||
|
||||
- A write that completes later on another thread (overlapped I/O, completion ports, asynchronous reads) is bracketed where the bytes land, not where the request was issued.
|
||||
- Ordinary CPU stores from host C++ code need no bracket: the write watch records them (through a fault where the page is protected).
|
||||
|
||||
Reference in new issue
Block a user