| // 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); | 
 | }; |