mirror of
https://github.com/aljazceru/kata-containers.git
synced 2026-01-07 08:24:23 +01:00
Fixes #50 This is done for decoupling device management part from other parts. It seperate device.go to several dirs and files: ``` virtcontainers/device ├── api │ └── interface.go ├── config │ └── config.go ├── drivers │ ├── block.go │ ├── generic.go │ ├── utils.go │ ├── vfio.go │ ├── vhost_user_blk.go │ ├── vhost_user.go │ ├── vhost_user_net.go │ └── vhost_user_scsi.go └── manager ├── manager.go └── utils.go ``` * `api` contains interface definition of device management, so upper level caller should import and use the interface, and lower level should implement the interface. it's bridge to device drivers and callers. * `config` contains structed exported data. * `drivers` contains specific device drivers including block, vfio and vhost user devices. * `manager` exposes an external management package with a `DeviceManager`. Signed-off-by: Zhang Wei <zhangwei555@huawei.com>
49 lines
1.5 KiB
Go
49 lines
1.5 KiB
Go
// Copyright (c) 2017-2018 Intel Corporation
|
|
// Copyright (c) 2018 Huawei Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package drivers
|
|
|
|
import (
|
|
"github.com/kata-containers/runtime/virtcontainers/device/api"
|
|
"github.com/kata-containers/runtime/virtcontainers/device/config"
|
|
)
|
|
|
|
// VhostUserBlkDevice is a block vhost-user based device
|
|
type VhostUserBlkDevice struct {
|
|
config.VhostUserDeviceAttrs
|
|
}
|
|
|
|
// Attrs returns the VhostUserDeviceAttrs associated with the vhost-user device
|
|
func (vhostUserBlkDevice *VhostUserBlkDevice) Attrs() *config.VhostUserDeviceAttrs {
|
|
return &vhostUserBlkDevice.VhostUserDeviceAttrs
|
|
}
|
|
|
|
// Type returns the type associated with the vhost-user device
|
|
func (vhostUserBlkDevice *VhostUserBlkDevice) Type() config.DeviceType {
|
|
return config.VhostUserBlk
|
|
}
|
|
|
|
//
|
|
// VhostUserBlkDevice's implementation of the device interface:
|
|
//
|
|
|
|
// Attach is standard interface of api.Device, it's used to add device to some
|
|
// DeviceReceiver
|
|
func (vhostUserBlkDevice *VhostUserBlkDevice) Attach(devReceiver api.DeviceReceiver) (err error) {
|
|
return vhostUserAttach(vhostUserBlkDevice, devReceiver)
|
|
}
|
|
|
|
// Detach is standard interface of api.Device, it's used to remove device from some
|
|
// DeviceReceiver
|
|
func (vhostUserBlkDevice *VhostUserBlkDevice) Detach(devReceiver api.DeviceReceiver) error {
|
|
return nil
|
|
}
|
|
|
|
// DeviceType is standard interface of api.Device, it returns device type
|
|
func (vhostUserBlkDevice *VhostUserBlkDevice) DeviceType() config.DeviceType {
|
|
return vhostUserBlkDevice.DevType
|
|
}
|