virtio-vsock
软件环境:ubuntu20.04 aosp
硬件环境:x86 PC
目标:在host ubuntu20.04和Android虚拟机间测试virtio-vsock
介绍
在android cuttlefish虚拟机启动已支持vsock,如vehicle hal等很多场景都使用了vsock。
测试
- 在host ubuntu20.04运行server demo,监听AF_VSOCK协议9999端口
#include <sys/socket.h>
#include <linux/vm_sockets.h>
#include <string.h>
#include <stdio.h>int main()
{int s = socket(AF_VSOCK, SOCK_STREAM, 0);struct sockaddr_vm addr;memset(&addr, 0, sizeof(struct sockaddr_vm));addr.svm_family = AF_VSOCK;addr.svm_port = 9999;addr.svm_cid = VMADDR_CID_HOST;bind(s, &addr, sizeof(struct sockaddr_vm));listen(s, 0);struct sockaddr_vm peer_addr;socklen_t peer_addr_size = sizeof(struct sockaddr_vm);int peer_fd = accept(s, &peer_addr, &peer_addr_size);char buf[64];size_t msg_len;while ((msg_len = recv(peer_fd, &buf, 64, 0)) > 0) {printf("Received %lu bytes: %.*s\n", msg_len, msg_len, buf);}return 0;
}
- 在android虚拟机运行client demo,向AF_VSOCK协议9999端口发数据
#include <sys/socket.h>
#include <linux/vm_sockets.h>
#include <string.h>int main()
{int s = socket(AF_VSOCK, SOCK_STREAM, 0);struct sockaddr_vm addr;memset(&addr, 0, sizeof(struct sockaddr_vm));addr.svm_family = AF_VSOCK;addr.svm_port = 9999;addr.svm_cid = VMADDR_CID_HOST;connect(s, &addr, sizeof(struct sockaddr_vm));send(s, "Hello, world!", 13, 0);close(s);return 0;
}
- 结果
参考
https://chromium.googlesource.com/chromiumos/platform2/+/9e91613d2da1b3d6cfb1c77681444e688ce99cf4/vm_tools/docs/vsock.md
virtio-vsock相关推荐
- VIRTIO 前后端驱动中 GPA,HVA 转换原理
先说几个英文缩写: GVA - Guest Virtual Address,虚拟机的虚拟地址 GPA - Guest Physical Address,虚拟机的物理地址 HVA - Host Virt ...
- linux 字符设备号分配状况
字符设备主设备号范围 早期的内核字符主设备分配范围为0~255,后来由于不够用,对字符主设备号分配范围扩充到0~511,按照动态和静态申请划分情况使用,按照0~255和256~511两段进行详细划分, ...
- Kata Containers及相关vmm介绍
Kata Containers介绍 Kata Containers 是轻量级虚拟机的一种新颖实现,可无缝集成到容器生态系统中. Kata Containers 与容器一样轻巧快速,并与容器管理层集成, ...
- vhost vsock
Linux VM sockets in Go 1.内核版本4.8+: 2.qemu版本2.8+: 3.qemu-system-x86_64 -m 4G -hda /home/matt/ubuntuvm ...
- Linux镜像如何添加驱动,安装virtio驱动(Linux)
为了确保私有镜像能正常创建启动云服务器,您需要在导入之前检查virtio驱动是否已经安装. 检查镜像内核是否支持virtio驱动 执行grep -i virtio /boot/config-$(una ...
- QEMU — VirtIO 的网络实现
目录 文章目录 目录 virtio-net 前端 virtio-net 由 QEMU 完全虚拟化模拟的后端 vhost-net 处于内核态的后端 vhost-user 使用 DPDK 加速的后端 vD ...
- QEMU — VirtIO 虚拟化
目录 文章目录 目录 全虚拟化 I/O 设备 准虚拟化 (Para-virtualizaiton) I/O 设备(VirtIO) VirtIO 的架构设计理念 VirtIO 在 Linux 中的实现 ...
- virtio后端驱动详解
virtIO是一种半虚拟化驱动,广泛用于在XEN平台和KVM虚拟化平台,用于提高客户机IO的效率,事实证明,virtIO极大的提高了VM IO 效率,配备virtIO前后端驱动的情况下,客户机IO效率 ...
- Virtio:针对 Linux 的 I/O 虚拟化框架
使用 KVM 和 lguest 的半虚拟化 I/O Linux 内核支持多种虚拟化模式,并且支持的数量随着虚拟化的进步和新模式的出现(例如 lguest)而增加.但是,让这些虚拟化模式能够在 Linu ...
- [FreeBSD] kvm下安装virtio驱动的freebsd
kvm下安装客户机据说采用virtio驱动效率会高一些.不过virtio是gpl授权协议的,freebsd不会默认支持.需要用户自行编译内核.现记录过程如下 宿主机OS ubuntu 12.04 de ...
最新文章
- Connecting the Dots: 应用于主动单目深度估计的深度学习模型(CVPR2019)
- 97. Leetcode 剑指 Offer 60. n个骰子的点数 (动态规划-背包问题)
- 请解释Spring Bean 的生命周期?
- Redis实战(六):Redis的集群:AKF,主从复制的概念引入,CAP,Sentinel 哨兵
- 关于Config.ARGB_8888、Config.ALPHA_8、Config.ARGB_4444、Config.RGB_565的理解
- python接口自动化测试(七)-unittest-批量用例管理
- 树莓派4 PWM控制风扇转速
- editplus php格式化,让Editplus自动格式化css和js
- 使用MongoDB Compass将JSON数据文件导入MongDB
- 纸飞机飞行曲线matlab,从小到大只会做个纸飞机?关于折纸的「高端」技巧通通告诉你...
- 纬度、经度和坐标系网格
- 程序员创业:从有想法 - 公司注册 - 项目路演 - 一对一投资人商谈
- matlab保存nii_Matlab实现NIfTI(ANALYZE)核磁共振图像读写
- Olympiad(求区间内的美丽数)超详细 (C,C++)
- 在Win10系统下使用与安装metis
- 万花筒写轮眼画法_万花筒写轮眼画法教程
- 12[红+绿+蓝+Alpha]
- U3D_API_解析
- 物联网创业项目(物联网创业点子大全500个)
- 鸿水点评:春晚四小花旦