| // 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 int64 FREQUENCY_UNKNOWN = -1; |
| const int64 VOLTAGE_UNKNOWN = -1; |
| |
| /// A collection of some basic information for a given performance state. |
| struct CpuPerformanceStateInfo { |
| /// Frequency the core is operating at in hertz. |
| int64 frequency_hz; |
| |
| // Voltage the core is operating at in microvolts. |
| int64 voltage_uv; |
| }; |
| |
| protocol Device { |
| /// Returns information about a given performance state for this performance |
| /// domain. |
| GetPerformanceStateInfo(uint32 state) -> (CpuPerformanceStateInfo info) error zx.status; |
| |
| /// Returns the number of logical cores contained within this performance |
| /// domain. |
| GetNumLogicalCores() -> (uint64 count); |
| |
| /// 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(uint64 index) -> (uint64 id); |
| }; |