1. 简介
Virtio-console 是一个用于数据输入和输出的简单设备。该控制台的 virtio 设备 ID 为 3,支持 1 到 16 个端口。每个端口都有一对输入和输出 virtqueue,用于在前端 (FE) 和后端 (BE) 驱动程序之间传递信息。每个 virtqueue 的大小为 64(可在源代码中配置)。前端驱动程序会将空缓冲区放入接收 virtqueue 以接受传入数据,并将要发送的字符排入发送 virtqueue。
Virtio-console 设备还具有一对控制 IO virtqueue。控制 virtqueue 用于在设备和驱动程序之间传递信息,包括:连接两侧的端口打开和关闭,主机指示某个端口是否为控制台端口,添加新端口,端口热插拔或拔出,虚拟机(guest)指示端口或设备是否成功添加、端口是否已打开或关闭等信息。
acrn的virtio-console框架如下图所示,
2. 前端驱动
对于guest os,只需要确保在config中打开virtio-console的config
前端驱动代码在drivers/char/virtio_console.c
3. 后端驱动
这个不同的hypervisor实现不同,如acrn,后端驱动在Service VM的userspace中
5. 使用
在uos中,正常情况下会有/dev/hvc节点
在sos中启动创建uos时,加上console=hvc0参数作为uos 的cmdline
评论