Documentation
¶
Index ¶
- Constants
- Variables
- func DpkgArchitecture() string
- func DpkgKernelArchitecture() string
- func Endian() binary.ByteOrder
- func IsRISCVISASupported(isa string) error
- func IsSupportedArchitecture(architectures []string) bool
- func SetArchitecture(newArch ArchitectureType)
- type ArchitectureType
- type CPUSet
- type RISCVHWProbePairs
Constants ¶
const ( RISCV_HWPROBE_IMA_FD uint64 = 1 << iota RISCV_HWPROBE_IMA_C RISCV_HWPROBE_IMA_V RISCV_HWPROBE_EXT_ZBA RISCV_HWPROBE_EXT_ZBB RISCV_HWPROBE_EXT_ZBS RISCV_HWPROBE_EXT_ZICBOZ RISCV_HWPROBE_EXT_ZBC RISCV_HWPROBE_EXT_ZBKB RISCV_HWPROBE_EXT_ZBKC RISCV_HWPROBE_EXT_ZBKX RISCV_HWPROBE_EXT_ZKND RISCV_HWPROBE_EXT_ZKNE RISCV_HWPROBE_EXT_ZKNH RISCV_HWPROBE_EXT_ZKSED RISCV_HWPROBE_EXT_ZKSH RISCV_HWPROBE_EXT_ZKT RISCV_HWPROBE_EXT_ZVBB RISCV_HWPROBE_EXT_ZVBC RISCV_HWPROBE_EXT_ZVKB RISCV_HWPROBE_EXT_ZVKG RISCV_HWPROBE_EXT_ZVKNED RISCV_HWPROBE_EXT_ZVKNHA RISCV_HWPROBE_EXT_ZVKNHB RISCV_HWPROBE_EXT_ZVKSED RISCV_HWPROBE_EXT_ZVKSH RISCV_HWPROBE_EXT_ZVKT RISCV_HWPROBE_EXT_ZFH RISCV_HWPROBE_EXT_ZFHMIN RISCV_HWPROBE_EXT_ZIHINTNTL RISCV_HWPROBE_EXT_ZVFH RISCV_HWPROBE_EXT_ZVFHMIN RISCV_HWPROBE_EXT_ZFA RISCV_HWPROBE_EXT_ZTSO RISCV_HWPROBE_EXT_ZACAS RISCV_HWPROBE_EXT_ZICOND RISCV_HWPROBE_EXT_ZIHINTPAUSE RISCV_HWPROBE_EXT_ZVE32X RISCV_HWPROBE_EXT_ZVE32F RISCV_HWPROBE_EXT_ZVE64X RISCV_HWPROBE_EXT_ZVE64F RISCV_HWPROBE_EXT_ZVE64D RISCV_HWPROBE_EXT_ZIMOP RISCV_HWPROBE_EXT_ZCA RISCV_HWPROBE_EXT_ZCB RISCV_HWPROBE_EXT_ZCD RISCV_HWPROBE_EXT_ZCF RISCV_HWPROBE_EXT_ZCMOP RISCV_HWPROBE_EXT_ZAWRS RISCV_HWPROBE_EXT_SUPM RISCV_HWPROBE_EXT_ZICNTR RISCV_HWPROBE_EXT_ZIHPM RISCV_HWPROBE_EXT_ZFBFMIN RISCV_HWPROBE_EXT_ZVFBFMIN RISCV_HWPROBE_EXT_ZVFBFWMA RISCV_HWPROBE_EXT_ZICBOM RISCV_HWPROBE_EXT_ZAAMO RISCV_HWPROBE_EXT_ZALRSC RISCV_HWPROBE_EXT_ZABHA RISCV_HWPROBE_EXT_ZALASR RISCV_HWPROBE_EXT_ZICBOP RISCV_HWPROBE_EXT_ZILSD RISCV_HWPROBE_EXT_ZCLSD )
Extensions to be retrieved via unix.RISCV_HWPROBE_KEY_IMA_EXT_0 Note: This list is declared here since the one in golang.org/x/sys/unix/ztypes_linux_riscv64.go is not complete, and only contains the values up to RISCV_HWPROBE_EXT_ZIHINTPAUSE. Some of the constants missing in that file are required for RVA23, e.g. Zcmop
const ( RISCV_HWPROBE_KEY_BASE_BEHAVIOR int64 = 0x3 RISCV_HWPROBE_KEY_IMA_EXT_0 int64 = 0x4 RISCV_HWPROBE_BASE_BEHAVIOR_IMA uint64 = 0x1 )
Re-defined and assigned values matching the unix.* constants for tests
Variables ¶
var IsISASupportedByCPU = isISASupportedByCPU
IsISASupportedByCPU takes the name of an ISA and checks if it is supported by the CPU and kernel snapd is currently running on using architecture-specific code. Returns nil when the ISA is supported, or an explicit error otherwise.
var KernelVersion = osutil.KernelVersion
var RISCVHWProbe = func(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error) { return nil }
Re-defined to allow mocking this
var RiscVExtensions = []extDesc{ {Key: RISCV_HWPROBE_IMA_FD, Text: "F and D", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_IMA_C, Text: "C", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_IMA_V, Text: "V", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZBA, Text: "Zba", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZBB, Text: "Zbb", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZBS, Text: "Zbs", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZICBOZ, Text: "Zicboz", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZBC, Text: "Zbc", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZBKB, Text: "Zbkb", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZBKC, Text: "Zbkc", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZBKX, Text: "Zbkx", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZKND, Text: "Zknd", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZKNE, Text: "Zkne", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZKNH, Text: "Zknh", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZKSED, Text: "Zksed", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZKSH, Text: "Zksh", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZKT, Text: "Zkt", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVBB, Text: "Zvbb", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVBC, Text: "Zvbc", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVKB, Text: "Zvkb", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVKG, Text: "Zvkg", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVKNED, Text: "Zvkned", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVKNHA, Text: "Zvknha", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVKNHB, Text: "Zvknhb", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVKSED, Text: "Zvksed", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVKSH, Text: "Zvksh", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVKT, Text: "Zvkt", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZFH, Text: "Zfh", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZFHMIN, Text: "Zfhmin", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZIHINTNTL, Text: "Zihintntl", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVFH, Text: "Zvfh", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVFHMIN, Text: "Zvfhmin", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZFA, Text: "Zfa", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZTSO, Text: "Ztso", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZACAS, Text: "Zacas", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZICNTR, Text: "Zicntr", Required: true, Since: "6.15"}, {Key: RISCV_HWPROBE_EXT_ZICOND, Text: "Zicond", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZIHINTPAUSE, Text: "Zihintpause", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZIHPM, Text: "Zihpm", Required: true, Since: "6.15"}, {Key: RISCV_HWPROBE_EXT_ZVE32X, Text: "Zve32x", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVE32F, Text: "Zve32f", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVE64X, Text: "Zve64x", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVE64F, Text: "Zve64f", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVE64D, Text: "Zfe64d", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZIMOP, Text: "Zimop", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZCA, Text: "Zca", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZCB, Text: "Zcb", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZCD, Text: "Zcd", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZCF, Text: "Zcf", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZCMOP, Text: "Zcmop", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZAWRS, Text: "Zawrs", Required: true, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZAAMO, Text: "Zaamo", Required: true, Since: "6.15"}, {Key: RISCV_HWPROBE_EXT_ZALRSC, Text: "Zalrsc", Required: true, Since: "6.15"}, {Key: RISCV_HWPROBE_EXT_SUPM, Text: "Supm", Required: true, Since: "6.13"}, {Key: RISCV_HWPROBE_EXT_ZFBFMIN, Text: "Zfbfmin", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVFBFMIN, Text: "Zvfbfmin", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZVFBFWMA, Text: "Zvfbfwma", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZICBOM, Text: "Zicbom", Required: true, Since: "6.15"}, {Key: RISCV_HWPROBE_EXT_ZABHA, Text: "Zabha", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZALASR, Text: "Zalasr", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZICBOP, Text: "Zicbop", Required: true, Since: "6.19"}, {Key: RISCV_HWPROBE_EXT_ZILSD, Text: "Zilsd", Required: false, Since: "0"}, {Key: RISCV_HWPROBE_EXT_ZCLSD, Text: "Zclsd", Required: false, Since: "0"}, }
Define extensions list
The value of the "Required" field for all the entries is taken from RVA23 Profiles Specification, Version 1.0, 2024-10-17. The comments at the end of the line explain why the item is marked as Required.
Functions ¶
func DpkgArchitecture ¶
func DpkgArchitecture() string
DpkgArchitecture returns the debian equivalent architecture for the currently running architecture.
If the architecture does not map any debian architecture, the GOARCH is returned.
func DpkgKernelArchitecture ¶
func DpkgKernelArchitecture() string
DpkgKernelArchitecture returns the debian equivalent architecture for the current running kernel. This is usually the same as the DpkgArchitecture - however there maybe cases that you run e.g. a snapd:i386 on an amd64 kernel.
func IsRISCVISASupported ¶
IsRISCVISASupported takes the name of a RISCV64 ISA, gathers the list of extensions supported by the running platform, and verifies if all extensions required for compliance with the input ISA are supported. If they are, nil is returned. Otherwise, the missing requirement is returned.
Currently, only support for RVA23 can be checked for.
func IsSupportedArchitecture ¶
IsSupportedArchitecture returns true if the system architecture is in the list of architectures.
func SetArchitecture ¶
func SetArchitecture(newArch ArchitectureType)
SetArchitecture allows overriding the auto detected Architecture
Types ¶
type ArchitectureType ¶
type ArchitectureType string
ArchitectureType is the type for a supported snappy architecture
type RISCVHWProbePairs ¶
Re-defined like this because Mock functions have been moved to export_test.go