您的位置:首页 > 其它

kvm启动虚拟机流程(10)

2013-05-25 22:35 239 查看
建立信号处理

os_setup_signal_handling();

#ifdef CONFIG_VNC

vnc显示初始化

/* init remote displays */

if (vnc_display) {

vnc_display_init(ds);

if (vnc_display_open(ds, vnc_display) < 0)

exit(1);

if (show_vnc_port) {

printf("VNC server running on `%s'\n", vnc_display_local_addr(ds));

}

}

#endif

显示配置

/* display setup */

dpy_resize(ds);

dcl = ds->listeners;

while (dcl != NULL) {

if (dcl->dpy_refresh != NULL) {

ds->gui_timer = qemu_new_timer_ms(rt_clock, gui_update, ds);

qemu_mod_timer(ds->gui_timer, qemu_get_clock_ms(rt_clock));

break;

}

dcl = dcl->next;

}

文本控制台设定显示

text_consoles_set_display(ds);

初始化虚拟机设定完成

qdev_machine_creation_done();

只读内存加载

if (rom_load_all() != 0) {

fprintf(stderr, "rom loading failed\n");

exit(1);

}

寄存器重置

qemu_register_reset(qbus_reset_all_fn, sysbus_get_default());

qemu_run_machine_init_done_notifiers();

qemu系统重置

qemu_system_reset(VMRESET_SILENT);

} else if (autostart) {

虚拟机启动

vm_start();

}

操作系统设定路标

os_setup_post();

恢复所有vcpu

resume_all_vcpus();

进入主循环

main_loop();

关闭块设备

bdrv_close_all();

暂停所有vcpu

pause_all_vcpus();

清理网络

net_cleanup();

寄存器释放

res_free();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: