drivers

package
v0.0.0-...-04f2983 Latest Latest
Warning

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

Go to latest
Published: May 5, 2021 License: Apache-2.0, Apache-2.0 Imports: 12 Imported by: 18

Documentation

Index

Constants

View Source
const (
	PCIDomain   = "0000"
	PCIeKeyword = "PCIe"

	PCIConfigSpaceSize = 256
)

Variables

View Source
var (
	AllPCIeDevs = map[string]bool{}
)

Functions

func BindDevicetoHost

func BindDevicetoHost(bdf, hostDriver, vendorDeviceID string) error

BindDevicetoHost binds the device to the host driver driver after unbinding from vfio-pci.

func BindDevicetoVFIO

func BindDevicetoVFIO(bdf, hostDriver, vendorDeviceID string) (string, error)

BindDevicetoVFIO binds the device to vfio driver after unbinding from host. Will be called by a network interface or a generic pcie device.

func GetVFIODeviceType

func GetVFIODeviceType(deviceFileName string) config.VFIODeviceType

Types

type BlockDevice

type BlockDevice struct {
	*GenericDevice
	BlockDrive *config.BlockDrive
}

BlockDevice refers to a block storage device implementation.

func NewBlockDevice

func NewBlockDevice(devInfo *config.DeviceInfo) *BlockDevice

NewBlockDevice creates a new block device based on DeviceInfo

func (*BlockDevice) Attach

func (device *BlockDevice) Attach(devReceiver api.DeviceReceiver) (err error)

Attach is standard interface of api.Device, it's used to add device to some DeviceReceiver

func (*BlockDevice) Detach

func (device *BlockDevice) Detach(devReceiver api.DeviceReceiver) error

Detach is standard interface of api.Device, it's used to remove device from some DeviceReceiver

func (*BlockDevice) DeviceType

func (device *BlockDevice) DeviceType() config.DeviceType

DeviceType is standard interface of api.Device, it returns device type

func (*BlockDevice) GetDeviceInfo

func (device *BlockDevice) GetDeviceInfo() interface{}

GetDeviceInfo returns device information used for creating

func (*BlockDevice) Load

func (device *BlockDevice) Load(ds persistapi.DeviceState)

Load loads DeviceState and converts it to specific device

func (*BlockDevice) Save

func (device *BlockDevice) Save() persistapi.DeviceState

Save converts Device to DeviceState

type GenericDevice

type GenericDevice struct {
	ID         string
	DeviceInfo *config.DeviceInfo

	RefCount    uint
	AttachCount uint
}

GenericDevice refers to a device that is neither a VFIO device, block device or VhostUserDevice.

func NewGenericDevice

func NewGenericDevice(devInfo *config.DeviceInfo) *GenericDevice

NewGenericDevice creates a new GenericDevice

func (*GenericDevice) Attach

func (device *GenericDevice) Attach(devReceiver api.DeviceReceiver) error

Attach is standard interface of api.Device

func (*GenericDevice) Dereference

func (device *GenericDevice) Dereference() uint

Dereference remove one reference from device

func (*GenericDevice) Detach

func (device *GenericDevice) Detach(devReceiver api.DeviceReceiver) error

Detach is standard interface of api.Device

func (*GenericDevice) DeviceID

func (device *GenericDevice) DeviceID() string

DeviceID returns device ID

func (*GenericDevice) DeviceType

func (device *GenericDevice) DeviceType() config.DeviceType

DeviceType is standard interface of api.Device, it returns device type

func (*GenericDevice) GetAttachCount

func (device *GenericDevice) GetAttachCount() uint

GetAttachCount returns how many times the device has been attached

func (*GenericDevice) GetDeviceInfo

func (device *GenericDevice) GetDeviceInfo() interface{}

GetDeviceInfo returns device information used for creating

func (*GenericDevice) GetHostPath

func (device *GenericDevice) GetHostPath() string

GetHostPath return the device path in the host

func (*GenericDevice) GetMajorMinor

func (device *GenericDevice) GetMajorMinor() (int64, int64)

GetMajorMinor returns device major and minor numbers

func (*GenericDevice) Load

func (device *GenericDevice) Load(ds persistapi.DeviceState)

Load loads DeviceState and converts it to specific device

func (*GenericDevice) Reference

func (device *GenericDevice) Reference() uint

Reference adds one reference to device

func (*GenericDevice) Save

func (device *GenericDevice) Save() persistapi.DeviceState

Save converts Device to DeviceState

type PCISysFsProperty

type PCISysFsProperty string
var (
	PCISysFsDevicesClass     PCISysFsProperty = "class"         // /sys/bus/pci/devices/xxx/class
	PCISysFsSlotsAddress     PCISysFsProperty = "address"       // /sys/bus/pci/slots/xxx/address
	PCISysFsSlotsMaxBusSpeed PCISysFsProperty = "max_bus_speed" // /sys/bus/pci/slots/xxx/max_bus_speed
)

type PCISysFsType

type PCISysFsType string
var (
	PCISysFsDevices PCISysFsType = "devices" // /sys/bus/pci/devices
	PCISysFsSlots   PCISysFsType = "slots"   // /sys/bus/pci/slots
)

type VFIODevice

type VFIODevice struct {
	*GenericDevice
	VfioDevs []*config.VFIODev
}

VFIODevice is a vfio device meant to be passed to the hypervisor to be used by the Virtual Machine.

func NewVFIODevice

func NewVFIODevice(devInfo *config.DeviceInfo) *VFIODevice

NewVFIODevice create a new VFIO device

func (*VFIODevice) Attach

func (device *VFIODevice) Attach(devReceiver api.DeviceReceiver) (retErr error)

Attach is standard interface of api.Device, it's used to add device to some DeviceReceiver

func (*VFIODevice) Detach

func (device *VFIODevice) Detach(devReceiver api.DeviceReceiver) (retErr error)

Detach is standard interface of api.Device, it's used to remove device from some DeviceReceiver

func (*VFIODevice) DeviceType

func (device *VFIODevice) DeviceType() config.DeviceType

DeviceType is standard interface of api.Device, it returns device type

func (*VFIODevice) GetDeviceInfo

func (device *VFIODevice) GetDeviceInfo() interface{}

GetDeviceInfo returns device information used for creating

func (*VFIODevice) Load

func (device *VFIODevice) Load(ds persistapi.DeviceState)

Load loads DeviceState and converts it to specific device

func (*VFIODevice) Save

func (device *VFIODevice) Save() persistapi.DeviceState

Save converts Device to DeviceState

type VhostUserBlkDevice

type VhostUserBlkDevice struct {
	*GenericDevice
	VhostUserDeviceAttrs *config.VhostUserDeviceAttrs
}

VhostUserBlkDevice is a block vhost-user based device

func NewVhostUserBlkDevice

func NewVhostUserBlkDevice(devInfo *config.DeviceInfo) *VhostUserBlkDevice

NewVhostUserBlkDevice creates a new vhost-user block device based on DeviceInfo

func (*VhostUserBlkDevice) Attach

func (device *VhostUserBlkDevice) Attach(devReceiver api.DeviceReceiver) (err error)

Attach is standard interface of api.Device, it's used to add device to some DeviceReceiver

func (*VhostUserBlkDevice) Detach

func (device *VhostUserBlkDevice) Detach(devReceiver api.DeviceReceiver) error

Detach is standard interface of api.Device, it's used to remove device from some DeviceReceiver

func (*VhostUserBlkDevice) DeviceType

func (device *VhostUserBlkDevice) DeviceType() config.DeviceType

DeviceType is standard interface of api.Device, it returns device type

func (*VhostUserBlkDevice) GetDeviceInfo

func (device *VhostUserBlkDevice) GetDeviceInfo() interface{}

GetDeviceInfo returns device information used for creating

func (*VhostUserBlkDevice) Load

func (device *VhostUserBlkDevice) Load(ds persistapi.DeviceState)

Load loads DeviceState and converts it to specific device

func (*VhostUserBlkDevice) Save

func (device *VhostUserBlkDevice) Save() persistapi.DeviceState

Save converts Device to DeviceState

type VhostUserFSDevice

type VhostUserFSDevice struct {
	*GenericDevice
	config.VhostUserDeviceAttrs
}

VhostUserFSDevice is a virtio-fs vhost-user device

func (*VhostUserFSDevice) Attach

func (device *VhostUserFSDevice) Attach(devReceiver api.DeviceReceiver) (err error)

func (*VhostUserFSDevice) Detach

func (device *VhostUserFSDevice) Detach(devReceiver api.DeviceReceiver) error

func (*VhostUserFSDevice) DeviceType

func (device *VhostUserFSDevice) DeviceType() config.DeviceType

func (*VhostUserFSDevice) GetDeviceInfo

func (device *VhostUserFSDevice) GetDeviceInfo() interface{}

GetDeviceInfo returns device information that the device is created based on

type VhostUserNetDevice

type VhostUserNetDevice struct {
	*GenericDevice
	config.VhostUserDeviceAttrs
}

VhostUserNetDevice is a network vhost-user based device

func (*VhostUserNetDevice) Attach

func (device *VhostUserNetDevice) Attach(devReceiver api.DeviceReceiver) (err error)

Attach is standard interface of api.Device, it's used to add device to some DeviceReceiver

func (*VhostUserNetDevice) Detach

func (device *VhostUserNetDevice) Detach(devReceiver api.DeviceReceiver) error

Detach is standard interface of api.Device, it's used to remove device from some DeviceReceiver

func (*VhostUserNetDevice) DeviceType

func (device *VhostUserNetDevice) DeviceType() config.DeviceType

DeviceType is standard interface of api.Device, it returns device type

func (*VhostUserNetDevice) GetDeviceInfo

func (device *VhostUserNetDevice) GetDeviceInfo() interface{}

GetDeviceInfo returns device information used for creating

func (*VhostUserNetDevice) Load

func (device *VhostUserNetDevice) Load(ds persistapi.DeviceState)

Load loads DeviceState and converts it to specific device

func (*VhostUserNetDevice) Save

func (device *VhostUserNetDevice) Save() persistapi.DeviceState

Save converts Device to DeviceState

type VhostUserSCSIDevice

type VhostUserSCSIDevice struct {
	*GenericDevice
	config.VhostUserDeviceAttrs
}

VhostUserSCSIDevice is a SCSI vhost-user based device

func (*VhostUserSCSIDevice) Attach

func (device *VhostUserSCSIDevice) Attach(devReceiver api.DeviceReceiver) (err error)

Attach is standard interface of api.Device, it's used to add device to some DeviceReceiver

func (*VhostUserSCSIDevice) Detach

func (device *VhostUserSCSIDevice) Detach(devReceiver api.DeviceReceiver) error

Detach is standard interface of api.Device, it's used to remove device from some DeviceReceiver

func (*VhostUserSCSIDevice) DeviceType

func (device *VhostUserSCSIDevice) DeviceType() config.DeviceType

DeviceType is standard interface of api.Device, it returns device type

func (*VhostUserSCSIDevice) GetDeviceInfo

func (device *VhostUserSCSIDevice) GetDeviceInfo() interface{}

GetDeviceInfo returns device information used for creating

func (*VhostUserSCSIDevice) Load

func (device *VhostUserSCSIDevice) Load(ds persistapi.DeviceState)

Load loads DeviceState and converts it to specific device

func (*VhostUserSCSIDevice) Save

Save converts Device to DeviceState

Jump to

Keyboard shortcuts

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