摘要
TODO(https://fxbug.dev/42108078)
声明
#include <zircon/syscalls.h>
zx_status_t zx_system_powerctl(zx_handle_t resource,
uint32_t cmd,
const zx_system_powerctl_arg_t* arg);
说明
zx_system_powerctl
用于根据
cmd.Zircon 可能无法使系统处于给定的电源状态,
具体取决于其对所使用的架构的支持级别。
arg 是指向结构体的可选指针,该结构体提供更多信息 要执行的命令
命令
ZX_SYSTEM_POWERCTL_ENABLE_ALL_CPUS
将所有处理器核心设为活动内核。
arg 类型:n/a
ZX_SYSTEM_POWERCTL_DISABLE_ALL_CPUS_BUT_PRIMARY
仅将主 CPU 设置为活动状态。
arg 类型:n/a
ZX_SYSTEM_POWERCTL_ACPI_TRANSITION_S_STATE
仅针对 x86-64 进行了定义,但不再受支持。
返回 ZX_ERR_NOT_SUPPORTED
。
ZX_SYSTEM_POWERCTL_X86_SET_PKG_PL1
仅针对 x86-64 定义。
将 CPU 设为电源级别 1。
arg 类型:zx_system_powerctl_arg_t
(仅包含 x86_power_limit
并集)
有效。
struct {
uint32_t power_limit; // PL1 value in milliwatts
uint32_t time_window; // PL1 time window in microseconds
uint8_t clamp; // PL1 clamping enable
uint8_t enable; // PL1 enable
uint8_t padding2[2];
} x86_power_limit;
ZX_SYSTEM_POWERCTL_REBOOT
重启系统,控制应通过所有相关的固件和 引导加载程序。
arg 类型:n/a
ZX_SYSTEM_POWERCTL_REBOOT_BOOTLOADER
重启系统,但在引导加载程序中停止,而不是加载 系统。
arg 类型:n/a
ZX_SYSTEM_POWERCTL_REBOOT_RECOVERY
重新启动系统,但加载恢复操作系统,而不是 主要操作系统
arg 类型:n/a
ZX_SYSTEM_POWERCTL_SHUTDOWN
关闭系统。
arg 类型:n/a
ZX_SYSTEM_POWERCTL_ACK_KERNEL_INITIATED_REBOOT
当设备准备好重新启动以响应之前的信号时,由用户空间使用 。
arg 类型:n/a
如果内核之前未发出过需求信号,则返回 ZX_ERR_BAD_STATE
重新启动。
权限
resource 必须具有基本 ZX_RSRC_SYSTEM_POWER_BASE
的资源种类 ZX_RSRC_KIND_SYSTEM
。
返回值
ZX_OK
错误
如果提供的 cmd
值无法识别,则返回 ZX_ERR_INVALID_ARGS
。
另请参阅
TODO(https://fxbug.dev/42108078)