blob: 12ada66b099921a917afdbbcdb76aeb252df3c6a [file] [log] [blame]
// 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.
// TODO(fxb/39732): This should be read as "library zx".
library zz;
struct SystemPowerctlArg {
// TODO(scottmg): More unnamed unions.
//union {
// struct {
// uint8_t target_s_state; // Value between 1 and 5 indicating which S-state
// uint8_t sleep_type_a; // Value from ACPI VM (SLP_TYPa)
// uint8_t sleep_type_b; // Value from ACPI VM (SLP_TYPb)
// } acpi_transition_s_state;
// 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
// } x86_power_limit;
//};
};
[Transport = "Syscall"]
protocol system {
[const, vdsocall]
system_get_dcache_line_size() -> (uint32 size);
/// Get number of logical processors on the system.
[const, vdsocall]
system_get_num_cpus() -> (uint32 count);
/// Get version string for system.
[const, vdsocall]
system_get_version_string() -> (string_view version);
/// Get amount of physical memory on the system.
[vdsocall]
system_get_physmem() -> (uint64 physmem);
// TODO(scottmg): "features" has a features attribute. I'm not sure if/how it's used.
/// Get supported hardware capabilities.
[vdsocall]
system_get_features(uint32 kind) -> (status status, uint32 features);
/// Retrieve a handle to a system event.
/// Rights: None.
system_get_event(handle<job> root_job, uint32 kind) -> (status status, handle<event> event);
/// Soft reboot the system with a new kernel and bootimage.
/// Rights: resource must have resource kind ZX_RSRC_KIND_ROOT.
/// Rights: kernel_vmo must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_READ.
/// Rights: bootimage_vmo must be of type ZX_OBJ_TYPE_VMO and have ZX_RIGHT_READ.
system_mexec(handle<resource> resource, handle<vmo> kernel_vmo, handle<vmo> bootimage_vmo)
-> (status status);
/// Return a ZBI containing ZBI entries necessary to boot this system.
/// Rights: resource must have resource kind ZX_RSRC_KIND_ROOT.
system_mexec_payload_get(handle<resource> resource) -> (status status, vector_void buffer);
/// Rights: resource must have resource kind ZX_RSRC_KIND_ROOT.
system_powerctl(handle<resource> resource, uint32 cmd, SystemPowerctlArg arg)
-> (status status);
};