qemu code
来源:互联网 发布:网络剧呆头呆脑电视剧 编辑:程序博客网 时间:2024/06/07 06:45
qemu init
主代码流程
main -- G:\code\qemu-1.6.1\vl.c module_call_init(MODULE_INIT_QOM); -- 设备驱动初始化和注册#define type_init(function) module_init(function, MODULE_INIT_QOM)type_init(x86_cpu_register_types) -- cpu 创建module_call_init(MODULE_INIT_MACHINE); -- 机器类型注册初始化pc_machine_init bdrv_init_with_whitelist(); -- 磁盘类型初始化bdrv_initqemu_init_main_loopinit_clocksinit_timer_alarmqemu_signal_initcpudef_init -- not very importantsocket_init -- not very importantconfigure_accelerator -- tcg类型的初始化,也就是翻译机的种类的初始化kvm_inits->fd = qemu_open("/dev/kvm", O_RDWR);s->vmfd = kvm_ioctl(s, KVM_CREATE_VM, 0);kvm_arch_init(s);kvm_irqchip_create(s);qemu_init_cpu_loopcpu_exec_init_allmemory_map_initmemory_region_initaddress_space_initio_mem_initmemory_region_init_ioblk_mig_initqdev_machine_init -- qemu 本身设备初始化 ?machine->init(&args); -- 机器类型初始化qemu_register_machine(&pc_i440fx_machine_v1_6);qemu_register_machine(&pc_i440fx_machine_v1_5);qemu_register_machine(&pc_i440fx_machine_v1_4);qemu_register_machine(&pc_machine_v1_3);qemu_register_machine(&pc_machine_v1_2);qemu_register_machine(&pc_machine_v1_1);qemu_register_machine(&pc_machine_v1_0);qemu_register_machine(&pc_machine_v0_15);qemu_register_machine(&pc_machine_v0_14);qemu_register_machine(&pc_machine_v0_13);qemu_register_machine(&pc_machine_v0_12);qemu_register_machine(&pc_machine_v0_11);qemu_register_machine(&pc_machine_v0_10);qemu_register_machine(&isapc_machine);init_displaystate -- qemu 本身的display init
cpu设备注册创建
cpu设备类型创建type_init(x86_cpu_register_types)x86_cpu_type_infox86_cpu_common_class_initx86_cpu_realizefnqemu_init_vcpuqemu_kvm_start_vcpu -- kvm_enabledqemu_thread_createqemu_kvm_cpu_thread_fnkvm_init_vcpukvm_cpu_execkvm_vcpu_ioctl(cpu, KVM_RUN, 0);switch (run->exit_reason) {#define KVM_EXIT_UNKNOWN 0#define KVM_EXIT_EXCEPTION 1#define KVM_EXIT_IO 2#define KVM_EXIT_HYPERCALL 3#define KVM_EXIT_DEBUG 4#define KVM_EXIT_HLT 5#define KVM_EXIT_MMIO 6......}qemu_kvm_wait_io_eventqemu_tcg_init_vcpu -- tcg_enabledqemu_thread_create -- G:\code\qemu-1.6.1\cpus.cqemu_tcg_cpu_thread_fntcg_exec_alltcg_cpu_execcpu_exec -- G:\code\qemu-1.6.1\cpu-exec.c
机器类型注册创建
main.c -- G:\code\qemu-1.6.1\vl.c module_call_init(MODULE_INIT_MACHINE);machine_init(pc_machine_init); -- G:\code\qemu-1.6.1\hw\i386\pc_piix.cqemu_register_machine(&pc_machine_v1_0);pc_init_pcipc_init1pc_cpus_initpc_new_cpucpu_x86_createX86_CPUcpu_x86_registerkvm_pc_setup_irq_routing -- if kvm_irqchip_in_kernel()kvm_i8259_initpc_vga_initpc_nic_initpci_piix3_ide_initpc_cmos_initpc_pci_device_init ......
磁盘类型创建 and qemu-img
main -- G:\code\qemu-1.6.1\qemu-img.cqemu_init_main_loopbdrv_initmodule_call_init(MODULE_INIT_BLOCK);#define block_init(function) module_init(function, MODULE_INIT_BLOCK)img_cmds#include "qemu-img-cmds.hx"
pc_piix.c (G:\code\qemu-1.6.1\hw\i386):machine_init(pc_machine_init);machine_init(pc_machine_init);pc_machine_initpc_i440fx_machine_v1_6pc_init_pci_1_6pc_init_pcipc_init1pc_cpus_initpc_new_cpucpu_x86_createG:\code\qemu-1.6.1\target-i386\cpu.ctype_init(x86_cpu_register_types)x86_cpu_type_infox86_cpu_common_class_initx86_cpu_realizefnqemu_init_vcpukvm_enabled --> qemu_kvm_start_vcpu qemu_thread_create(cpu->thread, qemu_kvm_cpu_thread_fn, cpu, QEMU_THREAD_JOINABLE);kvm_init_vcpukvm_cpu_exec(cpu)kvm_vcpu_ioctl(cpu, KVM_RUN, 0);
- qemu code
- QEMU
- QEMU
- QEMU
- qemu
- qemu
- qemu
- QEMU
- QEMU
- QEMU
- qemu
- QEMU
- QEMU
- QEMU 进出code cache流程 (qemu-1.3.0,i386为例)
- I LIKE QEMU(DOWNLOAD SOURCE CODE AND IMAGE)
- QEMU技术分析2 - TCG(Tiny Code Generator)基本原理
- QEMU技术分析2 - TCG(Tiny Code Generator)基本原理
- /bin/sh: autoreconf: command not found (centos 6.5 install qemu from source code)
- websphere commerce - order status
- android-json学习教程
- 如何架构一个ios项目 个人经验总结
- unity3d 使用Instantiate功能做出子彈發射效果
- 使用spring jdbc的batchUpdate功能提高性能
- qemu code
- MFC之CListCtrl导出excel
- 牛人自述模拟电路学习历程
- 移动应用设计入门
- porject server 无法强制签入,无法保存解决
- storm运行和搭建
- c++异常处理
- 数据挖掘的数据集资源
- 常用的宏定义