VirtualBox

Changeset 52090 in vbox for trunk/src/VBox/Main/src-server


Ignore:
Timestamp:
Jul 18, 2014 6:37:32 AM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
95097
Message:

Main, Fe/Qt4: Added method to get effective paravirt. provider in MachineImpl; adjusted GUI and ConsoleImpl2 to use the new method as required.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r51903 r52090  
    12371237    }
    12381238
     1239    return S_OK;
     1240}
     1241
     1242HRESULT Machine::getEffectiveParavirtProvider(ParavirtProvider_T *aParavirtProvider)
     1243{
     1244    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     1245
     1246    *aParavirtProvider = mHWData->mParavirtProvider;
     1247    switch (mHWData->mParavirtProvider)
     1248    {
     1249        case ParavirtProvider_None:
     1250        case ParavirtProvider_HyperV:
     1251        case ParavirtProvider_Minimal:
     1252            break;
     1253
     1254        /* Resolve dynamic provider types to the effective types. */
     1255        default:
     1256        {
     1257            ComPtr<IGuestOSType> ptrGuestOSType;
     1258            HRESULT hrc2 = mParent->GetGuestOSType(Bstr(mUserData->s.strOsType).raw(), ptrGuestOSType.asOutParam());
     1259            AssertMsgReturn(SUCCEEDED(hrc2), ("Failed to get guest OS type. hrc2=%Rhrc\n", hrc2), hrc2);
     1260
     1261            Bstr guestTypeFamilyId;
     1262            hrc2 = ptrGuestOSType->COMGETTER(FamilyId)(guestTypeFamilyId.asOutParam());
     1263            AssertMsgReturn(SUCCEEDED(hrc2), ("Failed to get guest family. hrc2=%Rhrc\n", hrc2), hrc2);
     1264            BOOL fOsXGuest = guestTypeFamilyId == Bstr("MacOS");
     1265
     1266            switch (mHWData->mParavirtProvider)
     1267            {
     1268                case ParavirtProvider_Legacy:
     1269                {
     1270                    if (fOsXGuest)
     1271                        *aParavirtProvider = ParavirtProvider_Minimal;
     1272                    else
     1273                        *aParavirtProvider = ParavirtProvider_None;
     1274                    break;
     1275                }
     1276
     1277                case ParavirtProvider_Default:
     1278                {
     1279                    if (fOsXGuest)
     1280                        *aParavirtProvider = ParavirtProvider_Minimal;
     1281#if 0           /* Activate this soon. */
     1282                    else if (   mUserData->s.strOsType == "Windows81"
     1283                             || mUserData->s.strOsType == "Windows81_64"
     1284                             || mUserData->s.strOsType == "Windows8"
     1285                             || mUserData->s.strOsType == "Windows8_64"
     1286                             || mUserData->s.strOsType == "Windows7"
     1287                             || mUserData->s.strOsType == "Windows7_64"
     1288                             || mUserData->s.strOsType == "WindowsVista"
     1289                             || mUserData->s.strOsType == "WindowsVista_64"
     1290                             || mUserData->s.strOsType == "Windows2012"
     1291                             || mUserData->s.strOsType == "Windows2012_64"
     1292                             || mUserData->s.strOsType == "Windows2008"
     1293                             || mUserData->s.strOsType == "Windows2008_64")
     1294                    {
     1295                        *aParavirtProvider = ParavirtProvider_HyperV;
     1296                    }
     1297#endif
     1298                    else
     1299                        *aParavirtProvider = ParavirtProvider_None;
     1300                    break;
     1301                }
     1302            }
     1303            break;
     1304        }
     1305    }
     1306
     1307    Assert(   *aParavirtProvider == ParavirtProvider_None
     1308           || *aParavirtProvider == ParavirtProvider_Minimal
     1309           || *aParavirtProvider == ParavirtProvider_HyperV);
    12391310    return S_OK;
    12401311}
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette