understanding_qemu
  • Introduction
  • 设备模型
    • 设备类型注册
    • 设备类型初始化
    • 设备实例化
    • DeviceClass实例化细节
    • 面向对象的设备模型
    • 接口
    • 类型、对象和接口之间的转换
    • PCDIMM
      • PCDIMM类型
      • PCDIMM实例
      • 插入系统
      • 创建ACPI表
      • NVDIMM
  • 地址空间
    • 从初始化开始
    • MemoryRegion
    • AddressSpace Part1
    • FlatView
    • RAMBlock
    • AddressSpace Part2
    • 眼见为实
    • 添加MemoryRegion
  • APIC
    • 纯Qemu模拟
    • Qemu/kernel混合模拟
    • APICV
  • Live Migration
    • 从用法说起
    • 整体架构
    • VMStateDescription
    • 内存热迁移
    • postcopy
  • FW_CFG
    • 规范解读
    • Linux Guest
    • SeaBios
  • Machine
    • MachineType
    • PCMachine
  • CPU
    • TYPE_CPU
    • X86_CPU
  • MemoryBackend
    • MemoryBackend类层次结构
    • MemoryBackend初始化流程
Powered by GitBook
On this page
  • 继承关系
  • 初始化

Was this helpful?

  1. CPU

TYPE_CPU

Qemu中所有CPU类型都有一个父类TYPE_CPU。所以研究这个结构是开展后续研究的基础。

继承关系

按照老规矩,我们还是先看一下类型的继承层次关系。

  TYPE_OBJECT
  +-------------------------------+
  |class_init                     | = object_class_init
  |                               |
  |instance_size                  | = sizeof(Object)
  +-------------------------------+


  TYPE_DEVICE
  +-------------------------------+
  |class_size                     | = sizeof(DeviceClass)
  |class_init                     | = device_class_init
  |                               |
  |instance_size                  | = sizeof(Object)
  |instance_init                  | = device_initfn
  |instance_finalize              | = device_finalize
  |                               |
  |realize                        | = cpu_common_realizefn
  +-------------------------------+


  TYPE_CPU
  +-------------------------------+
  |class_size                     | = sizeof(CPUClass)
  |class_init                     | = cpu_class_init
  |                               |
  |instance_size                  | = sizeof(CPUState)
  |instance_init                  | = cpu_common_initfn
  |instance_finalize              | = cpu_common_finalize
  +-------------------------------+

大家可以看到realize函数也被我着重标出了。

初始化

针对TYPE_CPU,我们能看到的初始化过程就是普通的类型初始化的流程,以及Device类型realize时所做的工作。

具体的工作流程将根据不同的CPU类型而有所不同,还需要按照不同的CPU和Machine类型来处理。

PreviousCPUNextX86_CPU

Last updated 6 years ago

Was this helpful?

可以看到,TYPE_CPU是TYPE_DEVICE的子类,也就是CPU类型的初始化遵从。

Device类型初始化的方法