Changes for format.md: 111 added lines, 0 removed lines.
Original line number
Diff line number
Diff line
A version 1 capture contains a fixed header, three metadata strings and the table frames below the selected root. Integers are little-endian and no OCaml values are marshalled, so the reader can check lengths and tags before constructing a paging context.
## Header
```text
offset bytes encoding field
0 8 bytes 53 43 4f 50 45 00 01 0a
8 4 u32 domid
12 4 u32 vcpu
16 4 u32 physical-address width
20 4 u32 feature flags
24 56 7 * u64 cr0 cr2 cr3 cr4 efer rflags rip
80 4 u32 root-override tag
84 8 u64 root-override value
feature flags
bit 0 = nx
bit 1 = 1 gib pages
other bits = rejected
root override
tag 0 = use saved cr3, value must be zero
tag 1 = select value as the raw root, retain saved cr3
MD5 detects accidental corruption and does not authenticate a capture. Writes go through a mode-0600 temporary file beside the destination, followed by `fsync` and rename, but the directory itself is not synchronised and the rename may therefore be lost after a host crash.