MAX_WATCH_SNAPSHOTS

Constant MAX_WATCH_SNAPSHOTS 

Source
pub const MAX_WATCH_SNAPSHOTS: usize = 3;
Expand description

Shared state owning the capture closure plus the captured-report map.

Cloneable via the wrapped Arcs. The host installs an instance in the executor’s thread-local via Self::set_thread_local before execute_steps runs; the executor’s Op::CaptureSnapshot arm calls Self::capture with the op’s name. Maximum number of Op::WatchSnapshot ops a single scenario may register.

This is the framework’s per-scenario cap on user watchpoint slots across every supported host architecture, not a count of debug registers on any specific arch. One additional slot (slot 0) is always reserved internally for the *scx_root->exit_kind watchpoint that drives the error-class freeze trigger, so a host must expose at least 4 hardware watchpoint slots through KVM_SET_GUEST_DEBUG for every user Op::WatchSnapshot to arm. Common x86_64 and aarch64 hosts meet that bar.

The actual host slot count is probed once during VM bring-up via KVM_CHECK_EXTENSION(KVM_CAP_GUEST_DEBUG_HW_WPS) in crate::vmm::freeze_coord (search for Cap::DebugHwWps); a host returning <= 0 or fewer than 4 slots logs a tracing::warn! at coordinator setup. Per-arm failures surface as tracing::warn! from self_arm_watchpoint with per-vCPU retry capping at WATCHPOINT_MAX_NON_EINTR_FAILURES.