zx_system_powerctl

摘要

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)