Stage G: SEND, and two workers interleave; decision compares work heat (FABRIC-3.8 §3.8, §3.13.7)
SEND ( paddr plen name-c name-u -- ok? ): general kernel-Hermes send to a named VM, from = calling VM, one block max (refused, not truncated), every VM. New SK_HERMES_MSG_TYPE_SEND (30). Ruling C-4 (beta), Captain Bob: the switch decision compares work heat -- the heat each VM pulled in by its own per-beat charges -- not absolute heat, so Hera's structural endowment no longer makes her hottest. Before it, the two-worker test ran serial (AAAA...BBBB); after it, byte-identical on amd64/aarch64/riscv64: AAABBBBBBBBAAAAAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBBAAAAABBBBBAAAABB (40 A, 40 B, 16 runs; ordinary words only, nothing yields). Acceptance: relay 3, idle growth 0; dict_hash set changed by the new word (word_count 533) and identical across ISAs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
c7185facf0
commit
81def7b4a5
@@ -138,7 +138,9 @@ int sk_vm_switch_signal_take_decision_due(void);
|
||||
* Among registered participants other than `self` that have work -- a
|
||||
* pending kernel-Hermes message, or parked on their own stack mid-task
|
||||
* (top frame not VM_FRAME_IDLE), or (Hera only) pending console input --
|
||||
* returns the one with the lowest VM-physics heat; among equally cool
|
||||
* returns the one with the lowest work heat (vm_physics_work_heat_of(): heat
|
||||
* earned by its own per-beat charges -- ruling C-4 (β), FABRIC-3.8.md
|
||||
* §3.13.7; Hera's structural endowment doesn't count); among equally cool
|
||||
* candidates, the one waiting longest (unique wait stamps). With
|
||||
* self_competes set (the caller still has work), returns a candidate only
|
||||
* if it is strictly cooler than `self`. Returns NULL when nobody should
|
||||
|
||||
Reference in New Issue
Block a user