blob: c7bdeadf13a12bdac45e5cbc4ea19af6a3ef68f2 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.hardware.cpu.ctrl;
using zx;
/// CpuPerformanceStateInfo::frequency_hz and CpuPerformanceStateInfo::voltage_uv
/// are set to this if the frequency and voltage for the given performance state
/// are unknown respectively.
const FREQUENCY_UNKNOWN int64 = -1;
const VOLTAGE_UNKNOWN int64 = -1;
/// A collection of some basic information for a given performance state.
type CpuPerformanceStateInfo = struct {
/// Frequency the core is operating at in hertz.
frequency_hz int64;
// Voltage the core is operating at in microvolts.
voltage_uv int64;
};
protocol Device {
/// Returns information about a given performance state for this performance
/// domain.
GetPerformanceStateInfo(struct {
state uint32;
}) -> (struct {
info CpuPerformanceStateInfo;
}) error zx.status;
/// Returns the number of logical cores contained within this performance
/// domain.
GetNumLogicalCores() -> (struct {
count uint64;
});
/// Returns a global system-wide core ID for the nth core in this
/// performance domain. `index` must be a value in the range [0, n) where
/// n is the value returned by GetNumLogicalCores().
GetLogicalCoreId(struct {
index uint64;
}) -> (struct {
id uint64;
});
};