package platform
import "github.com/tetratelabs/wazero/internal/platform"
Package platform includes runtime-specific code needed for the compiler or otherwise.
Index ¶
- Constants
- Variables
- func CompilerSupported() bool
- func CompilerSupports(features api.CoreFeatures) bool
- func MmapCodeSegment(size int) ([]byte, error)
- func MprotectCodeSegment(b []byte) (err error)
- func MunmapCodeSegment(code []byte) error
- func Nanosleep(ns int64)
- func Nanotime() int64
- func NewFakeNanotime() sys.Nanotime
- func NewFakeRandSource() io.Reader
- func NewFakeWalltime() sys.Walltime
- func ToPosixPath(in string) string
- func Walltime() (sec int64, nsec int32)
- type CpuFeatureFlags
Constants ¶
const ( // CpuFeatureAmd64SSE4_1 is the flag to query CpuFeatureFlags.Has for SSEv4.1 capabilities on amd64 CpuFeatureAmd64SSE4_1 = 1 << iota // CpuFeatureAmd64BMI1 is the flag to query CpuFeatureFlags.Has for Bit Manipulation Instruction Set 1 (e.g. TZCNT) on amd64 CpuFeatureAmd64BMI1 // CpuExtraFeatureABM is the flag to query CpuFeatureFlags.Has for Advanced Bit Manipulation capabilities (e.g. LZCNT) on amd64 CpuFeatureAmd64ABM )
const ( // FakeEpochNanos is midnight UTC 2022-01-01 and exposed for testing FakeEpochNanos = 1640995200000 * ms )
Variables ¶
var CpuFeatures = loadCpuFeatureFlags()
CpuFeatures exposes the capabilities for this CPU, queried via the Has method.
FakeNanosleep implements sys.Nanosleep by returning without sleeping.
FakeOsyield implements sys.Osyield by returning without yielding.
Functions ¶
func CompilerSupported ¶
func CompilerSupported() bool
CompilerSupported includes constraints here and also the assembler.
func CompilerSupports ¶
func CompilerSupports(features api.CoreFeatures) bool
func MmapCodeSegment ¶
MmapCodeSegment copies the code into the executable region and returns the byte slice of the region.
See https://man7.org/linux/man-pages/man2/mmap.2.html for mmap API and flags.
func MprotectCodeSegment ¶
MprotectCodeSegment is like unix.Mprotect with RX permission.
func MunmapCodeSegment ¶
MunmapCodeSegment unmaps the given memory region.
func Nanosleep ¶
func Nanosleep(ns int64)
Nanosleep implements sys.Nanosleep with time.Sleep.
func Nanotime ¶
func Nanotime() int64
Nanotime implements sys.Nanotime with runtime.nanotime() if CGO is available and time.Since if not.
func NewFakeNanotime ¶
NewFakeNanotime implements sys.Nanotime that increases by 1ms each reading. See /RATIONALE.md
func NewFakeRandSource ¶
NewFakeRandSource returns a deterministic source of random values.
func NewFakeWalltime ¶
NewFakeWalltime implements sys.Walltime with FakeEpochNanos that increases by 1ms each reading. See /RATIONALE.md
func ToPosixPath ¶
ToPosixPath returns the input, as only windows might return backslashes.
func Walltime ¶
Walltime implements sys.Walltime with time.Now.
Note: This is only notably less efficient than it could be is reading runtime.walltime(). time.Now defensively reads nanotime also, just in case time.Since is used. This doubles the performance impact. However, wall time is likely to be read less frequently than Nanotime. Also, doubling the cost matters less on fast platforms that can return both in <=100ns.
Types ¶
type CpuFeatureFlags ¶
type CpuFeatureFlags uint64
CpuFeatureFlags exposes methods for querying CPU capabilities
const ( // CpuFeatureArm64Atomic is the flag to query CpuFeatureFlags.Has for Large System Extensions capabilities on arm64 CpuFeatureArm64Atomic CpuFeatureFlags = 1 << iota )
func (CpuFeatureFlags) Has ¶
func (c CpuFeatureFlags) Has(f CpuFeatureFlags) bool
func (CpuFeatureFlags) Raw ¶
func (c CpuFeatureFlags) Raw() uint64
Source Files ¶
cpuid.go cpuid_amd64.go crypto.go mmap_linux.go mmap_unix.go path.go platform.go time.go time_notwindows.go
- Version
- v1.11.0 (latest)
- Published
- Dec 18, 2025
- Platform
- linux/amd64
- Imports
- 16 packages
- Last checked
- 4 months ago –
Tools for package owners.