ZXFoundation™ 26h2
Loading...
Searching...
No Matches
arch.s390x.cpu.stsi Module Reference

Exported Modules

module  zxfoundation.base.types
module  lib.cstring
module  lib.error
module  std
module  std

Concepts

concept  arch::s390x::cpu::stsi::ValidStsiArguments

Data Structures

struct  arch::s390x::cpu::stsi::adjustment_factor
struct  arch::s390x::cpu::stsi::alternate_capability
struct  arch::s390x::cpu::stsi::basic_machine_cfg
struct  arch::s390x::cpu::stsi::basic_machine_cpu
struct  arch::s390x::cpu::stsi::basic_machine_cpus
class  arch::s390x::cpu::stsi::basic_machine_cpus_view
struct  arch::s390x::cpu::stsi::configuration_topology
class  arch::s390x::cpu::stsi::configuration_topology_view
struct  arch::s390x::cpu::stsi::lpar_cpu
struct  arch::s390x::cpu::stsi::lpar_cpus
struct  arch::s390x::cpu::stsi::detail::stsi_combo
struct  arch::s390x::cpu::stsi::topology_container
class  arch::s390x::cpu::stsi::topology_container_view
struct  arch::s390x::cpu::stsi::topology_core
struct  arch::s390x::cpu::stsi::topology_cpu_record
class  arch::s390x::cpu::stsi::topology_cpu_view
union  arch::s390x::cpu::stsi::topology_entry
class  arch::s390x::cpu::stsi::topology_list_view
struct  arch::s390x::cpu::stsi::topology_parse_result
struct  arch::s390x::cpu::stsi::topology_path
struct  arch::s390x::cpu::stsi::vm_cpus
struct  arch::s390x::cpu::stsi::vm_descriptor_block

Enumerations

enum class  basic_machine_cfg_ccr : u8 {
  nominal_capacity = 0 , changed_manual_control = 1 , changed_machine_exception = 2 , changed_nonexception_machine = 3 ,
  changed_external_condition = 4
}
enum class  cpu_polarization : u8 { horizontal = 0 , vertical_low = 1 , vertical_medium = 2 , vertical_high = 3 }
enum class  extended_vm_name_enc : u8 { not_provided = 0 , ebcdic = 1 , utf_8 = 2 }
enum class  selector1 : u8 { configuration_level_fc = 1 , configuration_level_multi_cpu = 2 }
enum class  selector2_1 : u8 { configuration_level = 1 , configuration_level_topology = 2 }
enum class  selector2_2 : u8 { configuration_level_current_cpu = 1 , configuration_level_all_cpu = 2 }
enum class  stsi_fc : u8 { basic_machine_information = 1 , logical_partition_information = 2 , virtual_machine_information = 3 , current_configuration_level = 15 }
enum class  topology_parse_error : u8 { none = 0 , truncated_entry , reserved_nl }
enum class  virtual_server_name_enc : u8 { not_provided = 0 , ebcdic = 1 , utf_8 = 2 }

Functions

 __endian__ (BIG)
u16 address_origin () const noexcept
auto adjustment_factors () const noexcept -> std::span< const adjustment_factor >
auto alternate_adjustment_factors () const noexcept -> std::span< const adjustment_factor >
auto alternate_cpu_capability () const noexcept -> std::optional< alternate_capability >
 arch::s390x::cpu::stsi::assert_size (adjustment_factor, 2)
 arch::s390x::cpu::stsi::assert_size (alternate_capability, 4)
 arch::s390x::cpu::stsi::assert_size (basic_machine_cfg, PAGE_SIZE)
 arch::s390x::cpu::stsi::assert_size (basic_machine_cpu, PAGE_SIZE)
 arch::s390x::cpu::stsi::assert_size (basic_machine_cpus, 44)
 arch::s390x::cpu::stsi::assert_size (extended_vm_name_enc, 1)
 arch::s390x::cpu::stsi::assert_size (lpar_cpu, PAGE_SIZE)
 arch::s390x::cpu::stsi::assert_size (lpar_cpus, PAGE_SIZE)
 arch::s390x::cpu::stsi::assert_size (topology_container, 8)
 arch::s390x::cpu::stsi::assert_size (topology_core, 16)
 arch::s390x::cpu::stsi::assert_size (virtual_server_name_enc, 1)
 arch::s390x::cpu::stsi::assert_size (vm_cpus, PAGE_SIZE)
 arch::s390x::cpu::stsi::assert_size (vm_descriptor_block, 64)
 basic_machine_cpus_view (std::span< const std::byte, 4096 > page) noexcept
 bitfield (multithreading_facility)
 bitfield (transient_condition)
 bitfield (type_percentage_bytes_valid)
 bitfield (dedicated)
 bitrsvd (5)
 bitrsvd (5)
 bitrsvd (28)
 bitrsvd (24)
 bitsfield (2, pp)
 bitsfield (4, description_block_count)
 bytersvd (1)
 bytersvd (3)
 bytersvd (tobytes(w, 1))
 bytersvd (tobytes(w, 3))
 bytersvd (tobytes(w, 5))
 bytersvd (tobytes(w, 972))
 bytersvd (2)
 bytersvd (tobytes(w, 20))
 bytersvd (tobytes(w, 998))
 bytersvd (1)
 bytersvd (tobytes(w, 2)+2)
 bytersvd (1)
 bytersvd (tobytes(hw, 1))
 bytersvd (tobytes(w, 1))
 bytersvd (tobytes(w, 20))
 bytersvd (tobytes(w, 998))
 bytersvd (1)
 bytersvd (3)
 bytersvd (tobytes(w, 1)+1)
 bytersvd (tobytes(w, 40))
 bytersvd (tobytes(w, 8))
 bytersvd (tobytes(w, 896))
 bytersvd (6)
 bytersvd (3)
 bytersvd (tobytes(w, 376))
 bytersvd (tobytes(w, 7))
 bytersvd (tobytes(w, 1))
 bytersvd (tobytes(w, 1))
 configuration_topology_view (std::span< const std::byte, PAGE_SIZE > page) noexcept
u8 cpu_type () const noexcept
auto arch::s390x::cpu::stsi::current_configuration_number () -> u4
 Get current configuration level.
bool dedicated () const noexcept
bool empty () const noexcept
topology_list_view entries () const noexcept
template<typename Fn>
requires std::invocable<Fn, u16>
void for_each_cpu (u32 threads_per_core, Fn &&fn) const
constexpr auto fraction () const noexcept -> double
bool has_alternate () const noexcept
const basic_machine_cpusheader () const noexcept
const configuration_topologyheader () const noexcept
u8 id () const noexcept
std::optional< u8 > id_at (u8 level) const noexcept
std::optional< u8 > innermost () const noexcept
auto arch::s390x::cpu::stsi::detail::invoke (void *sysinfo, u4 fc, u8 sel1, u8 sel2, u4 &curr_level) noexcept -> std::expected< condition_code, lib::kernel_error >
 Issue STSI instruction to store system information.
template<typename Out, stsi_fc Fc, selector1 Sel1, selector2_2 Sel2>
requires ValidStsiArguments<Out, Fc, Sel1, static_cast<u8>(Sel2)> && (Sel1 == selector1::configuration_level_multi_cpu)
auto arch::s390x::cpu::stsi::invoke (Out &sysinfo) noexcept -> std::expected< condition_code, lib::kernel_error >
 Issue STSI instruction to store system information.
template<typename Out, stsi_fc Fc, selector1 Sel1, selector2_1 Sel2>
requires ValidStsiArguments<Out, Fc, Sel1, static_cast<u8>(Sel2)> && (Sel1 == selector1::configuration_level_fc)
auto arch::s390x::cpu::stsi::invoke (Out &sysinfo) noexcept -> std::expected< condition_code, lib::kernel_error >
 Issue STSI instruction to store system information.
template<typename Out, stsi_fc Fc, selector1 Sel1>
requires (Fc == stsi_fc::current_configuration_level) && (Sel1 == selector1::configuration_level_fc)
auto arch::s390x::cpu::stsi::invoke (Out &sysinfo, u8 sel2) noexcept -> std::expected< condition_code, lib::kernel_error >
 Issue STSI instruction to store system information.
constexpr auto is_float () const noexcept -> bool
consteval bool arch::s390x::cpu::stsi::detail::is_valid_stsi (u8 fc, u8 sel1, u8 sel2)
std::span< const std::byte, TOPOLOGY_NR_MAG > mag () const noexcept
u64 mask () const noexcept
u8 mnest () const noexcept
u8 nesting_level () const noexcept
bool ok () const noexcept
std::optional< u8 > outermost () const noexcept
cpu_polarization polarization () const noexcept
 topology_container_view (const topology_container &raw) noexcept
 topology_cpu_view (topology_core raw) noexcept
 topology_list_view (std::span< const std::byte > tle_bytes) noexcept
constexpr auto value () const noexcept -> std::variant< u32, float >
template<typename Fn>
requires std::invocable<Fn, const topology_cpu_record&>
auto visit_cpu_entries (Fn &&fn) const -> topology_parse_result

Variables

u16 acc_offset {}
u8 capacity_adjustment_indication {}
basic_machine_cfg_ccr capacity_change_reason {}
u32 capacity_rating {}
u16 configured_cpus_count {}
u16 configured_logical_cpu_count {}
u16 configured_logical_cpu_count
topology_container container
u32 container_entries_visited {}
std::array< uchar, tobytes(w, 4)> control_program_identifier
topology_cpu_view cpu
topology_core cpu
u16 cpu_address {}
u16 cpu_address_origin {}
u32 cpu_capability {}
u32 cpu_entries_visited {}
u64 cpu_mask {}
u8 cpu_type {}
u16 cpus_count {}
u16 dedicated_logical_cpu_count {}
u8 depth {}
topology_parse_error error {topology_parse_error::none}
extended_vm_name_enc evmne
u8 fc {}
u8 format {}
u8 id {}
std::array< u8, TOPOLOGY_MAX_NEST > ids {}
u16 lcpu_address {}
u16 lcpu_id {}
u16 length {}
u64 lic_identifier {}
u8   logical_cpu_characteristic {} 
u32 lpar_caf {}
std::array< uchar, tobytes(w, 2)> lpar_name {}
u16 lpar_numer {}
std::array< std::byte, TOPOLOGY_NR_MAG > mag {}
std::array< uchar, tobytes(w, 4)> manufacturer {}
constexpr auto arch::s390x::cpu::stsi::MAX_VMS = 8
u16 mnest {}
std::array< uchar, tobytes(w, 4)> model {}
std::array< uchar, tobytes(w, 4)> model_capacity_identifer {}
u8   mt {} 
u8   mt {} 
u8   mt_general {} 
u8   mt_general {} 
u8 nl {}
u8 nl {}
uchar nl
u32 nominal_capacity_rating {}
u32 nominal_cpu_capability {}
u32 nominal_permanent_capacity_rating {}
u32 nominal_replacement_capacity_rating {}
u32 nominal_temporary_capacity_rating {}
topology_path path
std::array< uchar, tobytes(w, 4)> permanent_capacity_identifier {}
u32 permanent_capacity_rating {}
std::array< uchar, tobytes(w, 1)> plant {}
std::array< uchar, tobytes(w, 1)> plant {}
std::array< uchar, tobytes(w, 1)> plant {}
u32 primary_cpu_speed {}
u8   program_specified_mtid {} 
u16 raw {}
u32 raw {}
std::array< uchar, tobytes(w, 4)> replacement_capacity_identifier {}
u32 replacement_capacity_rating {}
u16 reserved_cpus_count {}
u16 reserved_logical_cpu_count {}
u16 reserved_logical_cpu_count
u32 secondary_cpu_capability {}
u32 secondary_cpu_speed {}
u8 sel1 {}
u8 sel2_hi {}
u8 sel2_lo {}
std::array< uchar, tobytes(w, 4)> sequence_code {}
std::array< uchar, tobytes(w, 4)> sequence_code {}
std::array< uchar, tobytes(w, 4)> sequence_code {}
u16 shared_logical_cpu_count {}
u16 standby_cpus_count {}
u16 standby_logical_cpu_count {}
u16 standby_logical_cpu_count
std::array< uchar, tobytes(w, 4)> temporary_capacity_identifier {}
u32 temporary_capacity_rating {}
topology_entry tle []
constexpr auto arch::s390x::cpu::stsi::TOPOLOGY_MAX_NEST = TOPOLOGY_NR_MAG - 1U
constexpr auto arch::s390x::cpu::stsi::TOPOLOGY_NR_MAG = 6U
u16 total_logical_cpu_count {}
u16 total_logical_cpu_count
std::array< uchar, tobytes(w, 1)> type {}
std::array< u8, 5 > type_percentages {}
u128 uuid
constexpr std::array arch::s390x::cpu::stsi::detail::valid_combos
std::array< uchar, tobytes(w, 64)> virtual_server_name {}
u32 vm_caf
std::array< std::array< uchar, tobytes(w, 64)>, MAX_VMS > vm_extended_name {}
std::array< uchar, tobytes(w, 2)> vm_name
std::array< vm_descriptor_block, MAX_VMS > vmdbs {}
u128 vsi_uuid {}
virtual_server_name_enc vsne {}

Files

file  arch/s390x/cpu/stsi.zcomponent/stsi.cxxm
 STSI (STore System Information) API.
file  arch/s390x/cpu/stsi.zcomponent/common.cxxm
file  arch/s390x/cpu/stsi.zcomponent/stsi.cxx