QEMU的入口main函数所在的源文件vl.c中针对QEMU_OPTION_vnc对vnc参数进行解析,vnc选项支持的具体参数在ui/vnc.c中进行定义,如下所示:
static QemuOptsList qemu_vnc_opts = {
.name = "vnc",
.head = QTAILQ_HEAD_INITIALIZER(qemu_vnc_opts.head),
.implied_opt_name = "vnc",
.desc = {
{
.name = "vnc",
.type = QEMU_OPT_STRING,
},{
.name = "websocket",
.type = QEMU_OPT_STRING,
},{
.name = "tls-creds",
.type = QEMU_OPT_STRING,
},{
/* Deprecated in favour of tls-creds */
.name = "x509",
.type = QEMU_OPT_STRING,
},{
.name = "share",
.type = QEMU_OPT_STRING,
},{
.name = "display",
.type = QEMU_OPT_STRING,
},{
.name = "head",
.type = QEMU_OPT_NUMBER,
},{
.name = "connections",
.type = QEMU_OPT_NUMBER,
},{
.name = "to",
.type = QEMU_OPT_NUMBER,
},{
.name = "ipv4",
.type = QEMU_OPT_BOOL,
},{
本文深入分析了QEMU的VNC Server架构,包括显卡、VncDisplay、VncState、VncClient和VNCJobQueue等关键概念。在QEMU启动过程中,vnc_init_func()函数负责初始化VNC Server,创建VncDisplay结构,启动worker线程,并建立与VNC客户端的连接。VNC worker thread处理VncJobQueue,更新VncState并将数据发送到客户端。同时,显卡与VncDisplay之间的定时器用于更新图像和鼠标显示。
最低0.47元/天 解锁文章

489

被折叠的 条评论
为什么被折叠?



