class Device

Defined at line 809 of file fidling/gen/sdk/fidl/fuchsia.hardware.ram.metrics/fuchsia.hardware.ram.metrics/hlcpp/fuchsia/hardware/ram/metrics/cpp/fidl.h

Interface to obtain memory bandwidth usage measurements from hardware

cycle counters. The interface supports up to 6 hardware counters

(called channels) which aggregate up to 64 unique buses (called ports).

An example of a possible configuration:

channel[0]

<

- A53x4 + M3x1

channel[1]

<

- gpu

channel[2]

<

- vpu + h264_decoder + hdmi

channel[3]

<

- image_isp + h264_encoder

The number of channels and which bit patterns to use for each port

are hardware specific.

Public Methods

void ~Device ()
void MeasureBandwidth (::fuchsia::hardware::ram::metrics::BandwidthMeasurementConfig config, MeasureBandwidthCallback callback)

Trigger one measurement. This can be called again before the reply

arrives but it won't be serviced until previous requests are completed.

The return on success is the measurement.

The return on failure are as follows:

ZX_ERR_INVALID_ARGS : The BandwidthMeasurementConfig values are incorrect.

ZX_ERR_NOT_SUPPORTED : The BandwidthMeasurementConfig values are not supported

by the hardware.

ZX_ERR_SHOULD_WAIT : Too many requests pending. A future request might succeed.

Other errors indicate internal failure.

void GetDdrWindowingResults (GetDdrWindowingResultsCallback callback)

Retrieve the DDR Windowing tool results

The windowing tool runs in the bootloader and stores results in a sticky register.

The return on success is the register value

The return on failure is ZX_ERR_NOT_SUPPORTED if the hardware does not support

reading the sticky register.