抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

QOM系统的"对象构建"子系统

Preface关于为何需要使用device_class_set_parent_realize()的讨论 1234567void device_class_set_parent_realize(DeviceClass *dc, DeviceRealize dev_realize, ...

qemu中设备实例化过程

设备实例化过程:vcpu线程和cpu实例如何对接Abstractqemu设备实例化大致可以分为两个阶段: QOM系统的初始化 具体设备的初始化 纯c编写的qemu为了实现面向对象开发了自己的一套QOM系统(qemu object module)。用户掌握QOM提供的接口后就可以在qemu开发过程中用上一些面向对象的特性。 这里1.2章将先会讨论qemu中用面向对象方式进行实例化的原理,然...

qemu中pci对中断的支持

Preface PCI Local Bus Specification: 2.2.6. Interrupt Pins (Optional) pci总线规范为pci设备准备了4个中断引脚(INTx#)用于传递中断。设备所使用的中断引脚信息保存在configuration space的Interrupt Pin Register中。这4个中断引脚在设备间的共享的,引脚的分配pci spec推荐...

qemu中对pcie的模拟

Overviewpcie对pci的功能进行了扩展,同步保留的对pci总线规范的兼容。这里仅对以下几点进行说明: root complex root complex是个抽象的概念,并不是某个具体的器件,表示一组pcie系统元素(桥、交换机、端口等)。简单的讲RC就是cpu与pcie拓扑结构的连接点(root),而这个连接点可以包含很多组件(所以叫complex)。主要功能(与pcie设备通信...

QEMU中GPA到HVA变换过程

GPA 到 HVA的过程QEMU通过GPA找到MemoryRegion从而完成到HVA的转换,而QEMU总是先从tlb中找tlbentry,再利用tlbentry找mr。GPA到HVA的问题就变为了,GPA找tlbentry的问题。 不是完整的状态机 指令经过qemu动态翻译后得到GPA地址字面值addr,qemu需要根据该地址找到对应的MR然后执行相应的读写操作 GPA地址字面值在XXX...

QEMU总线模拟

Abstract设备之间通过总线互联通信,如果将所有设备都挂在到sysbus(即所谓的内部总线:连接cpu、内存、pic总线控制器等设备的总线)将会增加主板的布线难度,而且cpu并不需要实时与外围设备通信。因此没必要每个设备都直接与cpu连接。 现代cpu通过sysbus直接连接一个控制芯片,这个控制芯片再管理外围设备。控制芯片将数据汇总后再与cpu通信。 这个过程对应到QEMU中的就是: ...

QEMU设备通信

Preface现实世界中设备之间通过总线互联/通信,其中sysbus一般负责与cpu直接相连的设备与cpu的通信,外围设备则会通过各种类型的总线(如pci总线)间接地与cpu通信。本文主要讨论QEMU中是如何对总线进行模拟来实现设备间通信。 QEMU中实现了BusState和SysBusDevice等BUS类来表示总线类型的继承关系,将设备强制转换成DeviceState结构后使用Devic...

关于qemu使用树状MemoryRegion的分析

树状结构的MemoryRegion这章关注的重点是:设计树状结构MR的目的。包括中间节点,叶子节点是什么,父子关系代表什么,以及为何这么设计。 首先说明结论: 非叶子节点都是container抽象,叶子节点是真正会被映射的MR 这么设计可以加速地址地址空间映射的过程(即在适当的位置插入一段地址空间) 父子关系一方面可以方便管理(如下文ccsr的例子),另一方面将整个大的线性空间分成了数个小...

qemu gdbserver internal

Prefacegdb设置断点的原理是使用ptrace系统调用建立gdb与目标程序的调试关系,gdb因此能够控制目标程序并先行对信号进行处理。因此设置断点的原理是:在断点处插入int 3触发软中断,gdb先行受到该软中断发出的SIGTRAP信号,从而转入gdb命令行,被调试程序停止。 利用gdb远程连接到和qemu中的gdbserver可以调试linux内核的执行过程。那qemu内的gdbse...

qemu monitor的工作模型

前言gdb调试程序会阻塞被调试程序运行,gdb走一步,程序才能走一步,形如: 1234gdbprocgdbproc 那qemu的monitor中使用HMP/QMP与虚拟机交互交互会不会导致qemu挂起呢?monitor和qemu交互是同步还是异步?如果是同步那qemu是如何挂起的 monitor等待命令输入时不会阻塞qemu进行,不像gdb那样等待命令时阻塞被调试程序运行。只是在输入命令敲...