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

current_hz [out] The snapshot system’s CPU clock frequency in Hz at the time of the snapshot.
max_hz [out] The snapshot system’s maximum possible CPU clock frequency.
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

major [out] The snapshot system’s operating system’s first (major) version number component. This would be `10` for macOS 10.12.1, and `6` for Windows 7 (NT 6.1) SP1 version 6.1.7601.
minor [out] The snapshot system’s operating system’s second (minor) version number component. This would be `12` for macOS 10.12.1, and `1` for Windows 7 (NT 6.1) SP1 version 6.1.7601.
bugfix [out] The snapshot system’s operating system’s third (bugfix) version number component. This would be `1` for macOS 10.12.1, and `7601` for Windows 7 (NT 6.1) SP1 version 6.1.7601.
build [out] A string further identifying an operating system version. For macOS 10.12.1, this would be `"16B2657"`. For Windows, this would be `"Service Pack 1"` if that service pack was installed. On Android, the `ro.build.fingerprint` system property would be appended. For Linux and other Unix-like systems, this would be the kernel version from `uname -srvm`, possibly with additional information appended.
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

dst_status [out] Whether the location observes daylight saving time, and if so, whether it or standard time is currently being observed.
standard_offset_seconds [out] The number of seconds that the location’s time zone is east (ahead) of UTC during standard time.
daylight_offset_seconds [out] The number of seconds that the location’s time zone is east (ahead) of UTC during daylight saving. time.
standard_name [out] The name of the time zone while standard time is being observed.
daylight_name [out] The name of the time zone while daylight saving time is being observed.
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