热迁移save分析(2)

来源:互联网 发布:c语言声明字符串 编辑:程序博客网 时间:2024/05/17 07:05

forkHelper会把xc_save这个可执行文件作为自己的一个线程来启动,并循环检测xc_save的标准输出,line就是用来存储xc_save的标准输出的。如果line不为空,则调用saveInputHandler来处理。实际上就相当于下图的关系:

forkHelper启动并检测xc_save的输出

xc_save -> forkHelper

下面我们看看xc_save里面都做了些什么。

首先它会对suspend的事件通道进行初始化。

si.suspend_evtchn =

              xc_suspend_evtchn_init(si.xc_fd, si.xce, si.domid, port);

如果初始化失败,会返回-1.

接下来,会调用最主要的部分xc_domain_save进行suspend操作和内存迭代拷贝。

ret = xc_domain_save(si.xc_fd, io_fd, si.domid, maxit, max_f, si.flags,

                         &callbacks, !!(si.flags & XCFLAGS_HVM),

                         &switch_qemu_logdirty);

 

原创粉丝点击