xen-qemu初始化
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初始化相关推荐
- qemu内存管理——扁平视图
文章目录 扁平化视图 FlatView 数据结构 FlatView初始化 FlatRange 数据结构 组织结构 初始状态 新增IO区间 内存拓扑变更分析 新建内存和IO地址空间 细分内存地址空间 q ...
- qemu 线程 vhost
[root@localhost cloud_images]# lsmod | grep vhost_net vhost_net 262144 0 vhost 262144 1 vhost_net ta ...
- OVS DPDK与QEMU之间如何通过vhost user协议通信 vhost user协议的控制和数据通道
netdev_dpdk_vhost_construct定义在文件openvswitch-2.9.2/lib/netdev-dpdk.c1058 static int 1059 netdev_dpdk_ ...
- hypercall的实现机制与硬件虚拟化
敏感指令如果运行在VMX非根模式下,其行为可能发生变化: 具体来说有三种可能: 1.行为不变化,不引起vmexit:虽是敏感指令,但其不需被vmm截获并模拟 2.行为变化,产生vmexit:典型需要截 ...
- 提升KVM异构虚拟机启动效率:透传(pass-through)、DMA映射(VFIO、PCI、IOMMU)、virtio-balloon、异步DMA映射、预处理
导读:KVM Forum 2020 是 KVM 社区最为重要和权威的大会.本文为阿里云工程师李伟男和郭成在 KVM Forum 2020 中的演讲内容整理而成. 目录 发现问题 设计思路 异步 DMA ...
- 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 ...
- 网络逻辑漏洞、SQLMAP、Nmap、burpsuite及其命令的使用方法
SQLMAP sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器.它拥有非常强大的检测引擎.具有多种特性的渗透测试神器.通过数据库指纹提取访问底层文件系统并 ...
- Linux命令、历史介绍、使用等
一.概述 1.1 Linux的历史 操作系统,英语Operating System简称为OS.说道操作系统就需要先讲一讲Unix,UNIX操作系统,是一个强大的多用户.多任务操作系统,支持多种处理器架 ...
- Linux的使用以及常用的命令
Linux的使用以及常用的命令 概述 Linux的历史 操作系统,英语Operating System简称为OS.说道操作系统就需要先讲一讲Unix,UNIX操作系统,是一个强大的多用户.多任务操作系 ...
最新文章
- iOS开发-简单解析JSON数据
- 搭建基于Docker社区版的Kubernetes本地集群
- FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.解决办法
- Android之自定义属性
- 吾爱破解python百度文库下载源码_【原创源码】【python】淘豆网文档下载探索
- 2006年度中国管理软件行业评选
- 计算机网络习题——循环冗余校验
- ios计算机错误,用iTunes更新IOS14失败,显示发生未知错误(4000)的简单解决办法!...
- windows10 cortana 不能搜索解决办法
- 前端实现炫酷动效_创建炫酷 CSS 背景效果的 10 个代码片段
- 软件设计师-计算机网络(刷题笔记)
- 计算机专业硕士论文评语,硕士论文评审意见范文
- Spring Boot从0开始学的个人笔记10 --任务
- iOS开发 XCode如何清理历史的项目工程记录
- Stream中map和flatmap的区别,一看就懂
- Java生成条形码图片,并保存在指定路径
- npm安装webpack时,报错npm WARN ajv-keywords@3.1.0 requires a peer of ajv@^6.0.0 but none is installed.
- 2GB Turbo Memory(迅盘)开启Dashboard(自定义程序加速)的方法
- 论文笔记【A Comprehensive Study of Deep Video Action Recognition】
- 大型券商机构智能大数据营销平台
热门文章
- WPS一级计算机基础知识,2017年一级计算机基础及WPS Office考试大纲
- CSS3新特性有哪些?
- UAV-Altizure使用教程
- Html5的form表单案例
- hyperledger fabric 实战开发——水产品溯源交易平台(一)
- 最懂你的服装设计师是AI?让用户 “凭心意” 生成数字服装#Adidas OZWORLD
- CSS:基本选择器中的ID选择器和class选择器的区别
- 【安全牛学习笔记】存储型XSS和BEEF浏览器攻击框架
- 使用poi导出excel时出现String empty报错
- oracle数据库字符6,oracle 数据库字符编码