kvm

package
v0.0.0-...-e4c45ee Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2024 License: Apache-2.0, MIT Imports: 38 Imported by: 0

Documentation

Overview

Package kvm provides a kvm-based implementation of the platform interface.

Index

Constants

View Source
const (
	KVM_CREATE_VM              = 0xae01
	KVM_GET_VCPU_MMAP_SIZE     = 0xae04
	KVM_CREATE_VCPU            = 0xae41
	KVM_SET_TSS_ADDR           = 0xae47
	KVM_RUN                    = 0xae80
	KVM_NMI                    = 0xae9a
	KVM_CHECK_EXTENSION        = 0xae03
	KVM_GET_TSC_KHZ            = 0xaea3
	KVM_SET_TSC_KHZ            = 0xaea2
	KVM_INTERRUPT              = 0x4004ae86
	KVM_SET_MSRS               = 0x4008ae89
	KVM_SET_USER_MEMORY_REGION = 0x4020ae46
	KVM_SET_REGS               = 0x4090ae82
	KVM_SET_SREGS              = 0x4138ae84
	KVM_GET_MSRS               = 0xc008ae88
	KVM_GET_REGS               = 0x8090ae81
	KVM_GET_SREGS              = 0x8138ae83
	KVM_GET_SUPPORTED_CPUID    = 0xc008ae05
	KVM_SET_CPUID2             = 0x4008ae90
	KVM_SET_SIGNAL_MASK        = 0x4004ae8b
	KVM_GET_VCPU_EVENTS        = 0x8040ae9f
	KVM_SET_VCPU_EVENTS        = 0x4040aea0
	KVM_SET_DEVICE_ATTR        = 0x4018aee1
)

KVM ioctls.

Only the ioctls we need in Go appear here; some additional ioctls are used within the assembly stubs (KVM_INTERRUPT, etc.).

Variables

View Source
var KVMProfiling = metric.FakeMetricBuilder{}

KVMProfiling is a builder that produces conditionally compiled metrics. Metrics made from this are compiled and active at runtime when the "kvm_profiling" go-tag is specified at compilation.

Functions

func OpenDevice

func OpenDevice(devicePath string) (*os.File, error)

OpenDevice opens the KVM device and returns the File. If the devicePath is empty, it will default to /dev/kvm.

Types

type KVM

type KVM struct {
	platform.NoCPUPreemptionDetection

	// KVM never changes mm_structs.
	platform.UseHostProcessMemoryBarrier

	platform.DoesOwnPageTables
	// contains filtered or unexported fields
}

KVM represents a lightweight VM context.

func New

func New(deviceFile *os.File) (*KVM, error)

New returns a new KVM-based implementation of the platform interface.

func (*KVM) CooperativelySchedulesAddressSpace

func (*KVM) CooperativelySchedulesAddressSpace() bool

CooperativelySchedulesAddressSpace implements platform.Platform.CooperativelySchedulesAddressSpace.

func (*KVM) MapUnit

func (*KVM) MapUnit() uint64

MapUnit implements platform.Platform.MapUnit.

func (*KVM) MaxUserAddress

func (*KVM) MaxUserAddress() hostarch.Addr

MaxUserAddress returns the first address that may not be used.

func (*KVM) MinUserAddress

func (*KVM) MinUserAddress() hostarch.Addr

MinUserAddress returns the lowest available address.

func (*KVM) NewAddressSpace

func (k *KVM) NewAddressSpace(any) (platform.AddressSpace, <-chan struct{}, error)

NewAddressSpace returns a new pagetable root.

func (*KVM) NewContext

func (k *KVM) NewContext(pkgcontext.Context) platform.Context

NewContext returns an interruptible context.

func (*KVM) SupportsAddressSpaceIO

func (*KVM) SupportsAddressSpaceIO() bool

SupportsAddressSpaceIO implements platform.Platform.SupportsAddressSpaceIO.

func (*KVM) SyscallFilters

func (k *KVM) SyscallFilters() seccomp.SyscallRules

SyscallFilters returns syscalls made exclusively by the KVM platform.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL