mirkobrombin
5c91120232
chore: merge pull request #47 from rayzorben/feat/set-thread-context
2026-10-30 06:32:58 +00:00
Raymond Bennett
f84e160586
fix: keep the clocks in the shared user data page current
...
KUSER_SHARED_DATA held the tick count, interrupt time and system time of the
moment the process started. Go reads its monotonic and wall clocks straight
from the page, so time stood still in every Go program: restic's scrypt
calibration never saw time pass and asked for parameters too large to use,
and the scheduler never saw a goroutine run long.
The page is now shared with the host, which rewrites the clock fields every
millisecond, in the order KSYSTEM_TIME readers rely on (second high word,
low word, first high word). The tick count counts ticks of 15.625 ms, as the
TickCountMultiplier the page declares says. map_shared can place a view at a
given address for this.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the shared page, its clock updates and the fixed-address view
(cherry picked from commit 9238cbcfb1c5611df67b295b71085176f5ddbebc)
2026-10-28 23:16:28 -07:00
Raymond Bennett
bf53b0b51a
feat: add SetThreadContext for suspended 64-bit threads
...
Go preempts a goroutine that runs too long by suspending its thread, reading
its context and setting it to call the runtime's preemption function. With
the clock now running, restic got that far and stopped on SetThreadContext.
The control and integer groups of the CONTEXT become the registers the
thread continues with: in its own task when it is paused there, in its saved
snapshot otherwise. A thread that is not suspended keeps its registers.
Assisted-by: Claude Code:claude-opus-5-5
AI-Scope: the handler and NativeProcess::set_thread_registers
(cherry picked from commit b1c31f9ffbea6bb1d91458193357184f305818f4)
2026-10-28 23:14:32 -07:00
mirkobrombin
bea2192ed6
fix: leave room for hooking libraries in front of every runtime export
2026-10-27 22:04:55 +00:00
mirkobrombin
41f3c1ba57
perf: trim the parallel host's per-call overhead
2026-10-26 00:17:53 +00:00
mirkobrombin
72ec37d544
perf: answer decided waits inside served calls
2026-10-26 00:17:53 +00:00
mirkobrombin
4d0e2b4be1
fix: preserve thread context during served API calls
2026-10-24 23:29:27 +02:00
mirkobrombin
0a0fe4be89
feat: add shared Windows process state and parallel guest execution
2026-10-24 16:24:23 +00:00
mirkobrombin
58c8551c14
fix: poll a running guest before waiting for it asleep
2026-10-23 19:44:27 +00:00
Mirko Brombin
ca7c6a3f13
feat: dispatch exceptions and unwind generated code as Windows does, with the shared user data page
2026-09-23 00:12:49 +00:00
Mirko Brombin
858304afb3
feat: pass negative 32-bit values the handlers widened back to 32-bit callbacks
2026-09-21 14:17:07 +00:00
Mirko Brombin
b816d74662
feat: wait for the guest asleep at once unless it had served calls answered in the last few milliseconds
2026-09-21 02:49:39 +02:00
Mirko Brombin
73dacde539
feat: drop the API breakpoints of an unmapped range by its bounds instead of scanning every breakpoint
2026-09-21 02:29:03 +02:00
Mirko Brombin
1a81af0661
feat: add save and restore only the general registers around a callback into the guest
2026-09-21 02:06:58 +02:00
Mirko Brombin
f72205299d
feat: read each guest page once while registering the API breakpoints on it
2026-09-21 00:49:22 +02:00
Mirko Brombin
4c84e2b913
feat: skip the stop reason for known API breakpoints and let calls return through the RET after their breakpoint
2026-09-20 23:32:00 +02:00
Mirko Brombin
e90683e15c
feat: answer window data, atom properties, existence and rectangles in the guest from a window table the runtime keeps current
2026-09-20 21:12:26 +02:00
Mirko Brombin
08ecacb4fd
feat: let a seccomp filter stop the guest's own system calls when RAVEN_SECCOMP is set, running only the runtime's gate
2026-09-20 19:20:59 +02:00
Mirko Brombin
72986735b7
feat: open the reserved pages around a read-write commit so later commits in the granule need no protection change
2026-09-20 14:35:11 +02:00
Mirko Brombin
a081c1ac3c
feat: read the extended processor state at its own size and set a thread context without reading it back first
2026-09-20 13:27:44 +02:00
Mirko Brombin
4d4f269262
feat: keep guest mappings ordered by address so lookups and protection changes touch only the affected ones
2026-09-20 13:14:14 +02:00
Mirko Brombin
cd1f1faa99
feat: keep only the general registers around a memory system call of the guest
2026-09-20 13:08:56 +02:00
Mirko Brombin
dd4dba704e
feat: map libraries and read-only file views from the host file, cache guest registers per stop and serve completed one-time inits in the guest
2026-09-20 13:02:13 +02:00
Mirko Brombin
eda064950b
feat: add place 32-bit allocations in free low gaps and serve completion-routine file I/O, PathCch calls and dependencies beside a library loaded by path
2026-09-20 07:03:09 +00:00
Mirko Brombin
ab62d80bea
feat: serve leaf API calls without stopping the guest, run blocking Vulkan calls off the scheduler and keep input in order
2026-09-04 04:31:00 +02:00
Mirko Brombin
ead54d6b10
feat: run Google Chrome with NT object queries, COM apartments, file completion ports and SDDL descriptors
2026-09-03 21:44:05 +02:00
Mirko Brombin
26fbeabc78
feat: run Steam's web UI with cross-process handles, per-thread message queues, socket events and process identity
2026-09-03 16:48:12 +02:00
Mirko Brombin
66087052d8
feat: run Chromium's helper processes with DirectWrite, named pipes, jobs, inherited handles and shared sections
2026-09-03 06:06:54 +02:00
Mirko Brombin
7b3461c003
feat: run Chromium's web helper further with reserved address space, native registry, tokens and process lists
2026-09-03 03:46:34 +02:00
Mirko Brombin
966069f911
feat: run Steam to its web helper with real sockets, TLS chains, child environments and image protection
2026-09-03 02:50:56 +02:00
Mirko Brombin
fa0c3652f8
feat: keep a finished time slice from ending the wait of a later memory operation
2026-08-02 09:18:34 +02:00
Mirko Brombin
0e1fb1bd29
feat: give 64-bit programs the ANSI window functions and present a Direct3D 9 frame through DXVK
2026-08-02 06:14:20 +02:00
Mirko Brombin
bc37ed5e58
feat: add time slice guest threads and wait on events through the scheduler
2026-08-02 05:26:50 +02:00
Mirko Brombin
469f7926b9
feat: give 32-bit programs a Vulkan loader over the bridge with layout translation
2026-08-02 02:47:33 +02:00
Mirko Brombin
8789133e17
feat: run guest threads, critical sections, heap and ANSI window calls in 32-bit programs
2026-08-02 00:07:11 +02:00
Mirko Brombin
342f1361e8
feat: marshal Vulkan commands from the registry
2026-08-01 10:46:12 +02:00
Mirko Brombin
a52e9e7d1d
feat: add scroll bars, carets, clipboard, hooks, key state and fast thread-block paths; Notepad++ shows its window
2026-08-01 00:41:27 +02:00
Mirko Brombin
4a973d4dce
feat: add GDI rasterizer, text, image loading, guest user32 component and pinned libpng
2026-08-01 00:12:57 +02:00
Mirko Brombin
659315e3a9
feat: map window and DIB pixels into the host, defer presentation and provision the common controls component
2026-07-31 23:22:18 +02:00
Mirko Brombin
cd91b52e20
feat: add menu, window manager, registry, shell, version and platform APIs for Notepad++ bring-up
2026-07-31 22:56:57 +02:00
Mirko Brombin
efc6104b5b
feat: add kernel32 services, guest threads and structured exceptions for PE64 processes
2026-07-31 21:45:18 +02:00
Mirko Brombin
2c94d9cc31
feat: give empty windows a clipped surface and trace x86 API results
2026-07-31 19:00:22 +02:00
Mirko Brombin
87d631c24b
feat: run x86 desktop window and message contracts
2026-07-31 18:22:26 +02:00
Mirko Brombin
3418963433
feat: add native x86 compatibility-mode process execution
2026-07-31 17:23:44 +02:00
Mirko Brombin
154272073d
feat: preserve native C++ migration
2026-07-31 16:46:25 +02:00