blob: 1615d49ee065e86272b8efbda45836706ecdab4b [file] [log] [blame] [view]
# zx_system_get_performance_info
## NAME
<!-- Contents of this heading updated by update-docs-from-fidl, do not edit. -->
Get CPU performance parameters.
## SYNOPSIS
<!-- Contents of this heading updated by update-docs-from-fidl, do not edit. -->
```c
#include <zircon/syscalls.h>
zx_status_t zx_system_get_performance_info(zx_handle_t resource,
uint32_t topic,
size_t count,
void* info,
size_t* output_count);
```
## DESCRIPTION
`zx_system_get_performance_info()` requests CPU performance parameters maintained by the kernel. The
*topic* parameter indicates what specific information is desired.
*count* indicates the number of items to query. Topics may impose requriements on this value.
*info* is a pointer to a buffer of sufficient size to accommodate *count* entries of the type
specified by *topic*. The values stored in this array are undefined if the syscall returns an error.
*output_count* is updated with the number of info entries populated by the kernel on success. The
value stored in this memory location is undefined if the syscall returns an error.
[TOC]
## TOPICS
### ZX_CPU_PERF_SCALE
*count*: Must be equal to the number of logical CPUs in the system.
*info* type: `zx_cpu_performance_scale_t[count]`
Returns an array of `zx_cpu_performance_scale_t` with entries indicating the current performance
scales (scalar values representing relative operating points) of each logical CPU in the system. The
values reflect the most recent call to `zx_system_set_performance_info`, even if the values have not
yet taken effect.
See [RFC 0123](/docs/contribute/governance/rfcs/0123_cpu_performance_info.md)
for further details on values and update protocols.
### ZX_CPU_DEFAULT_PERF_SCALE
*count*: Must be equal to the number of logical CPUs in the system.
*info* type: `zx_cpu_performance_scale_t[count]`
Returns an array of `zx_cpu_performance_scale_t` with entries indicating the default performance
scales used during boot of each logical CPU in the system.
See [RFC 0123](/docs/contribute/governance/rfcs/0123_cpu_performance_info.md)
for further details.
## RIGHTS
<!-- Contents of this heading updated by update-docs-from-fidl, do not edit. -->
*resource* must have resource kind **ZX_RSRC_KIND_SYSTEM**.
## RETURN VALUE
`zx_system_get_performance_info()` returns **ZX_OK** on success. In the event of a failure, a
negative error value is returned.
## ERRORS
**ZX_ERR_BAD_HANDLE** *resource* is not a valid handle.
**ZX_ERR_WRONG_TYPE** *resource* is not resource kind **ZX_RSRC_KIND_SYSTEM**.
**ZX_ERR_ACCESS_DENIED** *resource* is not in the range [**ZX_RSRC_SYSTEM_CPU_BASE**, **ZX_RSRC_SYSTEM_CPU_BASE**+1).
**ZX_ERR_INVALID_ARGS** *topic*, *info*, or *output_count* have invalid values.
**ZX_ERR_OUT_OF_RANGE** *count* does not meet the requirements of the topic.
**ZX_ERR_NO_MEMORY** Failure due to lack of memory. There is no good way for userspace to handle this (unlikely) error. In a future build this error will no longer occur.
## SEE ALSO
- [RFC 0123: CPU performance info syscalls](/docs/contribute/governance/rfcs/0123_cpu_performance_info.md)
- [`zx_system_set_performance_info()`]
<!-- References updated by update-docs-from-fidl, do not edit. -->
[`zx_system_set_performance_info()`]: system_set_performance_info.md