qemu初始化

tools\ioemu-qemu-xen\vl.c

int main(int argc, char **argv, char **envp)

{

register_machines();

tools\ioemu-qemu-xen\i386-dm\machine.c

void register_machines(void)

{

qemu_register_machine(&xenfv_machine);

qemu_register_machine(&xenpv_machine);

}

tools\ioemu-qemu-xen\hw\xen_machine_fv.c

QEMUMachine xenfv_machine = {

"xenfv",

"Xen Fully-virtualized PC",

xen_init_fv,

BIOS_SIZE | RAMSIZE_FIXED,

.max_cpus = 1,

.nodisk_ok = 1,

};

tools\ioemu-qemu-xen\hw\xen_machine_fv.c

static void xen_init_fv(ram_addr_t ram_size, int vga_ram_size,

const char *boot_device,

const char *kernel_filename,const char *kernel_cmdline,

const char *initrd_filename, const char *cpu_model,

const char *direct_pci)

{

pc_machine.init(ram_size, vga_ram_size, boot_device,

kernel_filename, kernel_cmdline, initrd_filename,

cpu_model, direct_pci);

tools\ioemu-qemu-xen\target-i386\machine.c

void register_machines(void)

{

qemu_register_machine(&pc_machine);

qemu_register_machine(&isapc_machine);

}

tools\ioemu-qemu-xen\hw\pc.c

QEMUMachine pc_machine = {

.name = "pc",

.desc = "Standard PC",

.init = pc_init_pci,

.ram_require = PC_MAX_BIOS_SIZE,

.max_cpus = 255,

};

tools\ioemu-qemu-xen\hw\pc.c

static void pc_init_pci(ram_addr_t ram_size, int vga_ram_size,

const char *boot_device,

const char *kernel_filename,

const char *kernel_cmdline,

const char *initrd_filename,

const char *cpu_model,

const char *direct_pci)

{

pc_init1(ram_size, vga_ram_size, boot_device,

kernel_filename, kernel_cmdline,

initrd_filename, 1, cpu_model);

}

tools\ioemu-qemu-xen\hw\pc.c

/* PC hardware initialisation */

static void pc_init1(ram_addr_t ram_size, int vga_ram_size,

const char *boot_device,

const char *kernel_filename, const char *kernel_cmdline,

const char *initrd_filename,

int pci_enabled, const char *cpu_model)

{

rtc_state = rtc_init(0x70, i8259[8], 2000);

tools\ioemu-qemu-xen\hw\Mc146818rtc.c

RTCState *rtc_init(int base, qemu_irq irq, int base_year)

{

tools\ioemu-qemu-xen\i386-dm\Helper2.c

CPUX86State *cpu_x86_init(const char *cpu_model)

{

tools\ioemu-qemu-xen\target-i386\cpu.h

#define cpu_init cpu_x86_init

tools\ioemu-qemu-xen\hw\pc.c

/* PC hardware initialisation */

static void pc_init1(ram_addr_t ram_size, int vga_ram_size,

const char *boot_device,

const char *kernel_filename, const char *kernel_cmdline,

const char *initrd_filename,

int pci_enabled, const char *cpu_model)

{

for(i = 0; i < smp_cpus; i++) {

env = cpu_init(cpu_model);

if (!env) {

fprintf(stderr, "Unable to find x86 CPU definition\n");

exit(1);

}

结论:tools\ioemu-qemu-xen\hw\pc.c中的pc_init1负责对硬件设备进行初始化。

2013年5月22日上传

xen-qemu初始化相关推荐

  1. qemu内存管理——扁平视图

    文章目录 扁平化视图 FlatView 数据结构 FlatView初始化 FlatRange 数据结构 组织结构 初始状态 新增IO区间 内存拓扑变更分析 新建内存和IO地址空间 细分内存地址空间 q ...

  2. qemu 线程 vhost

    [root@localhost cloud_images]# lsmod | grep vhost_net vhost_net 262144 0 vhost 262144 1 vhost_net ta ...

  3. OVS DPDK与QEMU之间如何通过vhost user协议通信 vhost user协议的控制和数据通道

    netdev_dpdk_vhost_construct定义在文件openvswitch-2.9.2/lib/netdev-dpdk.c1058 static int 1059 netdev_dpdk_ ...

  4. hypercall的实现机制与硬件虚拟化

    敏感指令如果运行在VMX非根模式下,其行为可能发生变化: 具体来说有三种可能: 1.行为不变化,不引起vmexit:虽是敏感指令,但其不需被vmm截获并模拟 2.行为变化,产生vmexit:典型需要截 ...

  5. 提升KVM异构虚拟机启动效率:透传(pass-through)、DMA映射(VFIO、PCI、IOMMU)、virtio-balloon、异步DMA映射、预处理

    导读:KVM Forum 2020 是 KVM 社区最为重要和权威的大会.本文为阿里云工程师李伟男和郭成在 KVM Forum 2020 中的演讲内容整理而成. 目录 发现问题 设计思路 异步 DMA ...

  6. Linux虚拟化KVM-Qemu分析(四)之CPU虚拟化(2)

    Table of Contents 1. 概述 1.1 CPU工作原理 1.2 guest模式 2. 流程分析 2.1 vcpu的创建 2.1.1 qemu中vcpu创建 2.1.2 kvm中vcpu ...

  7. 网络逻辑漏洞、SQLMAP、Nmap、burpsuite及其命令的使用方法

    SQLMAP sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器.它拥有非常强大的检测引擎.具有多种特性的渗透测试神器.通过数据库指纹提取访问底层文件系统并 ...

  8. Linux命令、历史介绍、使用等

    一.概述 1.1 Linux的历史 操作系统,英语Operating System简称为OS.说道操作系统就需要先讲一讲Unix,UNIX操作系统,是一个强大的多用户.多任务操作系统,支持多种处理器架 ...

  9. Linux的使用以及常用的命令

    Linux的使用以及常用的命令 概述 Linux的历史 操作系统,英语Operating System简称为OS.说道操作系统就需要先讲一讲Unix,UNIX操作系统,是一个强大的多用户.多任务操作系 ...

最新文章

  1. iOS开发-简单解析JSON数据
  2. 搭建基于Docker社区版的Kubernetes本地集群
  3. FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.解决办法
  4. Android之自定义属性
  5. 吾爱破解python百度文库下载源码_【原创源码】【python】淘豆网文档下载探索
  6. 2006年度中国管理软件行业评选
  7. 计算机网络习题——循环冗余校验
  8. ios计算机错误,用iTunes更新IOS14失败,显示发生未知错误(4000)的简单解决办法!...
  9. windows10 cortana 不能搜索解决办法
  10. 前端实现炫酷动效_创建炫酷 CSS 背景效果的 10 个代码片段
  11. 软件设计师-计算机网络(刷题笔记)
  12. 计算机专业硕士论文评语,硕士论文评审意见范文
  13. Spring Boot从0开始学的个人笔记10 --任务
  14. iOS开发 XCode如何清理历史的项目工程记录
  15. Stream中map和flatmap的区别,一看就懂
  16. Java生成条形码图片,并保存在指定路径
  17. npm安装webpack时,报错npm WARN ajv-keywords@3.1.0 requires a peer of ajv@^6.0.0 but none is installed.
  18. 2GB Turbo Memory(迅盘)开启Dashboard(自定义程序加速)的方法
  19. 论文笔记【A Comprehensive Study of Deep Video Action Recognition】
  20. 大型券商机构智能大数据营销平台

热门文章

  1. WPS一级计算机基础知识,2017年一级计算机基础及WPS Office考试大纲
  2. CSS3新特性有哪些?
  3. UAV-Altizure使用教程
  4. Html5的form表单案例
  5. hyperledger fabric 实战开发——水产品溯源交易平台(一)
  6. 最懂你的服装设计师是AI?让用户 “凭心意” 生成数字服装#Adidas OZWORLD
  7. CSS:基本选择器中的ID选择器和class选择器的区别
  8. 【安全牛学习笔记】存储型XSS和BEEF浏览器攻击框架
  9. 使用poi导出excel时出现String empty报错
  10. oracle数据库字符6,oracle 数据库字符编码