Skip to the content.

vsock

看代码实现的位置内容其实不少 net/vmw_vsock/

看看这些配置的左右吧

CONFIG_VSOCKETS=y
CONFIG_VSOCKETS_DIAG=y
CONFIG_VSOCKETS_LOOPBACK=y
CONFIG_VIRTIO_VSOCKETS=y
CONFIG_VIRTIO_VSOCKETS_COMMON=y
# CONFIG_VSOCKMON is not set

在 qemu

qemu-system-x86_64 -device help

根据 vsock_transport::cancel_pkt 的注册位置,可以找到

也就是存在 vsock 的三个实现,

vsock

https://github.com/rust-vmm/vhost-device : 哦,原来 vhost 存在这么多的设备啊

net.c 和 vsock.c 是两个对称的模块, 但是从 net.c 分析

static const struct file_operations vhost_net_fops = {
    .owner          = THIS_MODULE,
    .release        = vhost_net_release,
    .read_iter      = vhost_net_chr_read_iter,
    .write_iter     = vhost_net_chr_write_iter,
    .poll           = vhost_net_chr_poll,
    .unlocked_ioctl = vhost_net_ioctl,
    .compat_ioctl   = compat_ptr_ioctl,
    .open           = vhost_net_open,
    .llseek     = noop_llseek,
};

static const struct file_operations vhost_vsock_fops = {
    .owner          = THIS_MODULE,
    .open           = vhost_vsock_dev_open,
    .release        = vhost_vsock_dev_release,
    .llseek     = noop_llseek,
    .unlocked_ioctl = vhost_vsock_dev_ioctl,
    .compat_ioctl   = compat_ptr_ioctl,
    .read_iter      = vhost_vsock_chr_read_iter,
    .write_iter     = vhost_vsock_chr_write_iter,
    .poll           = vhost_vsock_chr_poll,
};

看看 ioctl 的实现:

似乎的确该配置一下 vsock 了

fedora3 的启动中有这个:

Try contacting this VM’s SSH server via ‘ssh vsock%3’ from host.

但是我不知道该如何配置

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。