virtio-console

adtxl
2024-09-29 / 0 评论 / 16 阅读 / 正在检测是否收录...

1. 简介

Virtio-console 是一个用于数据输入和输出的简单设备。该控制台的 virtio 设备 ID 为 3,支持 1 到 16 个端口。每个端口都有一对输入和输出 virtqueue,用于在前端 (FE) 和后端 (BE) 驱动程序之间传递信息。每个 virtqueue 的大小为 64(可在源代码中配置)。前端驱动程序会将空缓冲区放入接收 virtqueue 以接受传入数据,并将要发送的字符排入发送 virtqueue。

Virtio-console 设备还具有一对控制 IO virtqueue。控制 virtqueue 用于在设备和驱动程序之间传递信息,包括:连接两侧的端口打开和关闭,主机指示某个端口是否为控制台端口,添加新端口,端口热插拔或拔出,虚拟机(guest)指示端口或设备是否成功添加、端口是否已打开或关闭等信息。

acrn的virtio-console框架如下图所示,
image.png

2. 前端驱动

对于guest os,只需要确保在config中打开virtio-console的config
前端驱动代码在drivers/char/virtio_console.c

3. 后端驱动

这个不同的hypervisor实现不同,如acrn,后端驱动在Service VM的userspace中

5. 使用

在uos中,正常情况下会有/dev/hvc节点

imagec5eed97cc47ed6d7.png

在sos中启动创建uos时,加上console=hvc0参数作为uos 的cmdline

0

评论 (0)

取消