qemu_init_main_loop 函数的主要逻辑如下: 首先调用 qemu_signal_init 将一个 fd 与一组信号关联起来,qemu_signal_init 调用 qemu_set_fd_handler 函数将该 signalfd 对应的可读回调函数设置为 sigfd_handler。 qemu_set_fd_handler 在首次调用时会调用 iohandler_init 创建一个全局的 iohandler_ctx 事件源,这...
@@ -199,10 +199,13 @@ static int qemu_signal_init(void) } #endif int main_loop_init(void) int qemu_init_main_loop(void) { int ret; init_clocks(); init_timer_alarm(); qemu_mutex_lock_iothread(); ret = qemu_signal_init(); if (ret) { 10 changes: 0 additions & 10 deletion...
qemu_init_board machine_run_board_init machine_class->init(machine) //主板类型为i440x(又称pc),可通过-machine(或-M)切换 [3]pc_init1 //i440x(又称pc)主板上的初始化; q35的话是pc_q35_init [3.1]x86_cpus_init for(cpu_nr)x86_cpu_new //循环创建指定数量的vcpu(先创建vcpu线程,然后ioctl...
a) module_call_init(MODULE_INIT_QOM);--设备驱动初始化和注册 type_init(x86_cpu_register_types)(target-i386/cpu.c) b) module_call_init(MODULE_INIT_MACHINE); -- 机器类型注册初始化 machine_init(pc_machine_init) c) socket_init d) qemu_init_cpu_loop e) configure_accelerator--tcg对KVM而言...
qemu_init_main_loop intqemu_init_main_loop(void) {intret; GSource*src; init_clocks(); ret=qemu_signal_init();if(ret) {returnret; }//malloc a globle fd arraygpollfds= g_array_new(FALSE, FALSE,sizeof(GPollFD));//create a aio contextqemu_aio_context=aio_context_new();//get ...
QEMU主事件循环的初始化函数为qemu_init_main_loop函数。 143 int qemu_init_main_loop(Error **errp) 144 { 145 int ret; 146 GSource *src; 147 Error *local_error = NULL; 148 149 init_clocks(qemu_timer_notify_cb); 150 151 ret = qemu_signal_init(); ...
int qemu_init_main_loop(Error **errp) { int ret; GSource *src; init_clocks(qemu_timer_notify_cb); ret = qemu_signal_init(errp); if (ret) { return ret; } qemu_aio_context = aio_context_new(errp); if (!qemu_aio_context) { return -EMFILE; } qemu_set_current_aio_context(qemu...
qemu_init_main_loop函数接着会调用aio_context_new创建一个全局的qemu_aio_context事件源,这个事件源主要用于处理BH和块设备层的同步使用。 最后,该函数调用aio_get_g_source和iohandler_get_g_source分别获取qemu_aio_context和iohandler_ctx的GSource,以GSource为参数调用g_source_attach两个AioContext加入到glib...
qemu执行的简要流程 vl.c main (qemu_main) 函数是入口 target-arm/helper.c arm_cpu_realizefn target-arm/cpu.c arm_cpu_realizefn 函数被调用,执行cpu动作 qemu_init_vcpu -> qemu_tcg_init_vcpu -> cpu-exec.c cpu_exec -> cpu_loop_exec_tb 是指令执行的主要流程...
net_init_tap_one 后端tap设备初始化 (vhost即虚拟机网卡IO数据通过一个内核线程在内核中直接处理而不需要经过qemu) vhost设备初始化--与内核交互,拉起vhost内核线程。 On 32-bit hosts, QEMU is limited by virtual address space 磁盘设备初始化,与磁盘热插流程类似。把设备fd加入main_loop,注册read和write的回...