摘要
设置 CPU 性能参数。
声明
#include <zircon/syscalls.h>
zx_status_t zx_system_set_performance_info(zx_handle_t resource,
uint32_t topic,
const void* info,
size_t count);
说明
zx_system_set_performance_info()
用于设置内核维护的 CPU 性能参数。topic 参数用于指明受影响的具体参数。
count 表示要设置的项数量。主题可能会对此值施加要求。
info 是指向足够大小的缓冲区的指针,该缓冲区可容纳 topic 所指定类型的 count 条目。
主题
ZX_CPU_PERF_SCALE
count:必须不为零,并且小于或等于系统中的逻辑 CPU 数量。
info 类型:zx_cpu_performance_scale_t[count]
一个 zx_cpu_performance_scale_t
数组,其中包含用于指定系统中相应逻辑 CPU 的性能标度(表示相对操作点的标量值)的条目。只有数组中指定的 CPU 会更新,其他 CPU 不受影响。
逻辑 CPU 编号必须按升序存储在数组中。缩放值采用无符号固定点 Q32.32 格式。标度值应表示 CPU 的相对性能,其中 1.0 对应于系统中最快 CPU 的最高操作点。
如需详细了解值和更新协议,请参阅 RFC 0123。
ZX_CPU_POWER_LIMIT
count:必须不为零,并且小于或等于系统中的逻辑 CPU 数量。
info 类型:zx_cpu_power_limit_t[count]
一个 zx_cpu_power_limit_t
数组,其中包含用于指定能耗限制(以纳瓦为单位)的条目。然后,调度程序将使用这些值来限制每个受影响处理器的功耗。
权限
resource 必须具有资源种类 ZX_RSRC_KIND_SYSTEM
。
返回值
zx_system_set_performance_info()
会在成功时返回 ZX_OK
。如果失败,则返回负的错误值。
错误
ZX_ERR_BAD_HANDLE
资源不是有效的句柄。
ZX_ERR_WRONG_TYPE
资源不是资源种类 ZX_RSRC_KIND_SYSTEM
。
ZX_ERR_OUT_OF_RANGE
resource 不在 [ZX_RSRC_SYSTEM_CPU_BASE
, ZX_RSRC_SYSTEM_CPU_BASE
+1] 范围内。
ZX_ERR_INVALID_ARGS
topic 或 info 的值无效,或者 info 中的条目顺序有误。
ZX_ERR_OUT_OF_RANGE
count 或 info 条目值不符合主题的要求。
ZX_ERR_NO_MEMORY
因内存不足而失败。用户空间没有很好的方式来处理这种(不太可能发生的)错误。在未来的 build 中,此错误将不再出现。