kvm创建虚拟机流程(2)

来源:互联网 发布:网络mg老虎机破解方法 编辑:程序博客网 时间:2024/06/05 07:23

qemudDomainDefine

static virDomainPtr qemudDomainDefine(virConnectPtr conn, const char *xml) {
    struct qemud_driver *driver = conn->privateData;
    virDomainDefPtr def;
    virDomainObjPtr vm = NULL;
    virDomainPtr dom = NULL;
    virDomainEventPtr event = NULL;
    int dupVM;

    qemuDriverLock(driver);
检查xml配置文件内容是否合法
    if (!(def = virDomainDefParseString(driver->caps, xml,
                                        QEMU_EXPECTED_VIRT_TYPES,
                                        VIR_DOMAIN_XML_INACTIVE)))
        goto cleanup;

    进行安全管理校验
    if (virSecurityManagerVerify(driver->securityManager, def) < 0)
        goto cleanup;
    检查xml配置文件定义的虚拟机是否与已经创建的虚拟机冲突
    if ((dupVM = virDomainObjIsDuplicate(&driver->domains, def, 0)) < 0)
        goto cleanup;
规范qemu虚拟机类型
(gdb) p def->os.machine
$30 = 0x7f7a6c001b00 "pc-1.0"
    if (qemudCanonicalizeMachine(driver, def) < 0)
        goto cleanup;

qemuDomainAssignAddresses ->qemuDomainAssignPCIAddresses ->qemuCapsExtractVersionInfo
->virCommandRun ->virCommandRunAsync ->virExecWithHook

 

 

原创粉丝点击