class SystemSnapshot
Defined at line 30 of file ../../third_party/crashpad/src/snapshot/system_snapshot.h
An abstract interface to a snapshot representing the state of a
system, comprising an operating system, CPU architecture, and various
other characteristics.
Public Methods
CPUArchitecture GetCPUArchitecture ()
Returns the snapshot system’s CPU architecture.
In some cases, a system may be able to run processes of multiple specific
architecture types. For example, systems based on 64-bit architectures
such as x86_64 are often able to run 32-bit code of another architecture
in the same family, such as 32-bit x86. On these systems, this method will
return the architecture of the process that the snapshot is associated
with, provided that the SystemSnapshot object was obtained from
ProcessSnapshot::System(). This renders one aspect of this method’s return
value a process attribute rather than a system attribute, but it’s defined
here rather than in ProcessSnapshot because the CPU architecture is a
better conceptual fit for the system abstraction alongside these other
related methods.
uint32_t CPURevision ()
Returns the snapshot system’s CPU revision.
For x86-family CPUs (including x86_64 and 32-bit x86), this is the CPU
family, model, and stepping ID values from `cpuid 1` `eax`. The family and
model values are adjusted to take the extended family and model IDs into
account. These values are encoded in this method’s return value with the
family in the high high 16 bits, the model in the next 8 bits, and the
stepping in the low 8 bits.
Returns
A CPU architecture-specific value identifying the CPU revision.
uint8_t CPUCount ()
Returns the total number of CPUs present in the snapshot system.
std::string CPUVendor ()
Returns the vendor of the snapshot system’s CPUs.
For x86-family CPUs (including x86_64 and 32-bit x86), this is the CPU
vendor identification string as encoded in `cpuid 0` `ebx`, `edx`, and
`ecx`.
Returns
A string identifying the vendor of the snapshot system’s CPUs.
void CPUFrequency (uint64_t * current_hz, uint64_t * max_hz)
Returns frequency information about the snapshot system’s CPUs in
and
Parameters
uint32_t CPUX86Signature ()
Returns an x86-family snapshot system’s CPU signature.
This is the family, model, and stepping ID values as encoded in `cpuid 1`
`eax`.
This method must only be called when GetCPUArchitecture() indicates an
x86-family CPU architecture (#kCPUArchitectureX86 or
#kCPUArchitectureX86_64).
Returns
An x86 family-specific value identifying the CPU signature.
uint64_t CPUX86Features ()
Returns an x86-family snapshot system’s CPU features.
This is the feature information as encoded in `cpuid 1` `edx` and `ecx`.
`edx` is placed in the low half of the return value, and `ecx` is placed
in the high half.
This method must only be called when GetCPUArchitecture() indicates an
x86-family CPU architecture (#kCPUArchitectureX86 or
#kCPUArchitectureX86_64).
Returns
An x86 family-specific value identifying CPU features.
uint64_t CPUX86ExtendedFeatures ()
Returns an x86-family snapshot system’s extended CPU features.
This is the extended feature information as encoded in `cpuid 0x80000001`
`edx` and `ecx`. `edx` is placed in the low half of the return value, and
`ecx` is placed in the high half.
This method must only be called when GetCPUArchitecture() indicates an
x86-family CPU architecture (#kCPUArchitectureX86 or
#kCPUArchitectureX86_64).
Returns
An x86 family-specific value identifying extended CPU features.
uint32_t CPUX86Leaf7Features ()
Returns an x86-family snapshot system’s “leaf 7” CPU features.
This is the “leaf 7” feature information as encoded in `cpuid 7` `ebx`. If
`cpuid 7` is not supported by the snapshot CPU, this returns `0`.
This method must only be called when GetCPUArchitecture() indicates an
x86-family CPU architecture (#kCPUArchitectureX86 or
#kCPUArchitectureX86_64).
Returns
An x86 family-specific value identifying “leaf 7” CPU features.
bool CPUX86SupportsDAZ ()
Returns an x86-family snapshot system’s CPU’s support for the SSE
DAZ (“denormals are zeros”) mode.
This determines whether the CPU supports DAZ mode at all, not whether this
mode is enabled for any particular thread. DAZ mode support is detected by
examining the DAZ bit in the `mxcsr_mask` field of the floating-point
context saved by `fxsave`.
This method must only be called when GetCPUArchitecture() indicates an
x86-family CPU architecture (#kCPUArchitectureX86 or
#kCPUArchitectureX86_64).
Returns
`true` if the snapshot system’s CPUs support the SSE DAZ mode,
`false` if they do not.
OperatingSystem GetOperatingSystem ()
Returns the snapshot system’s operating system family.
bool OSServer ()
Returns whether the snapshot system runs a server variant of its
operating system.
void OSVersion (int * major, int * minor, int * bugfix, std::string * build)
Returns the snapshot system’s operating system version information
in
and
Parameters
std::string OSVersionFull ()
Returns the snapshot system’s full operating system version
information in string format.
For macOS, the string contains values from the operating system and
kernel. A macOS 10.12.1 system snapshot would be identified as `"Mac OS
X 10.12.1 (16B2657); Darwin 16.1.0 Darwin Kernel Version 16.1.0: Wed Oct
19 20:31:56 PDT 2016; root:xnu-3789.21.4~4/RELEASE_X86_64 x86_64"`.
std::string MachineDescription ()
Returns a description of the snapshot system’s hardware in string
format.
For macOS, the string contains the Mac model and board ID. A mid-2014 15"
MacBook Pro would be identified as `"MacBookPro11,3
(Mac-2BD1B31983FE1663)"`.
bool NXEnabled ()
Returns the status of the NX (no-execute, or XD, execute-disable)
feature on the snapshot system.
This refers to a feature that allows mapped readable pages to be marked
as non-executable.
Returns
`true` if the snapshot system supports NX and it is enabled.
void TimeZone (DaylightSavingTimeStatus * dst_status, int * standard_offset_seconds, int * daylight_offset_seconds, std::string * standard_name, std::string * daylight_name)
Returns time zone information from the snapshot system, based on
its locale configuration and real-time clock.
Parameters
uint64_t AddressMask ()
Returns a mask indicating the range of valid addresses for a
pointer.
ARM64 supports storing pointer authentication codes in the upper bits of
a pointer. This mask is generated based on the number of bits in a pointer
reserved for the authentication codes. To recover an address from pointer
with an authentication code, `AND` this mask with the pointer. If the pac
sign extension bit is set, instead `~` and `OR` this mask with the
pointer.
If the platform does not support pointer authentication, or the range of
valid addressees for a pointer was inaccessible, this field will be 0.
void ~SystemSnapshot ()
Defined at line 32 of file ../../third_party/crashpad/src/snapshot/system_snapshot.h
Enumerations
enum OperatingSystem
| Name | Value |
|---|---|
| kOperatingSystemUnknown | 0 |
| kOperatingSystemMacOSX | 1 |
| kOperatingSystemWindows | 2 |
| kOperatingSystemLinux | 3 |
| kOperatingSystemAndroid | 4 |
| kOperatingSystemFuchsia | 5 |
| kOperatingSystemIOS | 6 |
A system’s operating system family.
Defined at line 35 of file ../../third_party/crashpad/src/snapshot/system_snapshot.h
enum DaylightSavingTimeStatus
| Name | Value |
|---|---|
| kDoesNotObserveDaylightSavingTime | 0 |
| kObservingStandardTime | 1 |
| kObservingDaylightSavingTime | 2 |
A system’s daylight saving time status.
The daylight saving time status is taken partially from the system’s
locale configuration. This determines whether daylight saving time is
ever observed on the system. If it is, the snapshot’s time
(ProcessSnapshot::SnapshotTime()) is used to determine whether the system
was observing daylight saving time at the time of the snapshot.
Defined at line 65 of file ../../third_party/crashpad/src/snapshot/system_snapshot.h