VirtualBox

Changeset 52090 in vbox for trunk/src


Ignore:
Timestamp:
Jul 18, 2014 6:37:32 AM (11 years ago)
Author:
vboxsync
Message:

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

Location:
trunk/src/VBox
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElements.cpp

    r51988 r52090  
    342342            if (machine().GetCPUProperty(KCPUPropertyType_PAE))
    343343                acceleration << QApplication::translate("UIGDetails", "PAE/NX", "details (system)");
    344             switch (machine().GetParavirtProvider())
    345             {
    346                 case KParavirtProvider_Default: acceleration << QApplication::translate("UIGDetails", "Default Paravirtualization", "details (system)"); break;
    347                 case KParavirtProvider_Legacy:  acceleration << QApplication::translate("UIGDetails", "Legacy Paravirtualization", "details (system)"); break;
     344            switch (machine().GetEffectiveParavirtProvider())
     345            {
    348346                case KParavirtProvider_Minimal: acceleration << QApplication::translate("UIGDetails", "Minimal Paravirtualization", "details (system)"); break;
    349347                case KParavirtProvider_HyperV:  acceleration << QApplication::translate("UIGDetails", "Hyper-V Paravirtualization", "details (system)"); break;
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r52064 r52090  
    42064206  <interface
    42074207    name="IMachine" extends="$unknown"
    4208     uuid="45b0357d-28f4-4f90-b02c-13f2940efdda"
     4208    uuid="5cabbce0-6565-4713-a7fd-1f8c70e51797"
    42094209    wsmap="managed"
    42104210    wrap-hint-server-addinterfaces="IInternalMachineControl"
     
    72007200        <desc>
    72017201          Status of the CPU.
     7202        </desc>
     7203      </param>
     7204    </method>
     7205
     7206    <method name="getEffectiveParavirtProvider"  const="yes">
     7207      <desc>
     7208        Returns the effective paravirtualization provider for this VM.
     7209      </desc>
     7210      <param name="paravirtProvider" type="ParavirtProvider" dir="return">
     7211        <desc>
     7212          The effective paravirtualization provider for this VM.
    72027213        </desc>
    72037214      </param>
  • trunk/src/VBox/Main/include/MachineImpl.h

    r51498 r52090  
    11141114    HRESULT getCPUStatus(ULONG aCpu,
    11151115                         BOOL *aAttached);
     1116    HRESULT getEffectiveParavirtProvider(ParavirtProvider_T *aParavirtProvider);
    11161117    HRESULT queryLogFilename(ULONG aIdx,
    11171118                             com::Utf8Str &aFilename);
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r52082 r52090  
    874874
    875875    ParavirtProvider_T paravirtProvider;
    876     hrc = pMachine->COMGETTER(ParavirtProvider)(&paravirtProvider);                         H();
     876    hrc = pMachine->GetEffectiveParavirtProvider(&paravirtProvider);                        H();
    877877
    878878    ChipsetType_T chipsetType;
     
    11631163                fGimDeviceNeeded = false;
    11641164                break;
    1165 
    1166             case ParavirtProvider_Default:
    1167             {
    1168                 if (fOsXGuest)
    1169                 {
    1170                     pcszParavirtProvider = "Minimal";
    1171                     fGimDeviceNeeded = false;
    1172                 }
    1173 #if 0           /* Activate this soon. */
    1174                 else if (  osTypeId == "Windows7"
    1175                         || osTypeId == "Windows7_64"
    1176                         || osTypeId == "Windows8"
    1177                         || osTypeId == "Windows8_64"
    1178                         || osTypeId == "Windows81"
    1179                         || osTypeId == "Windows81_64")
    1180                 {
    1181                     pcszParavirtProvider = "HyperV";
    1182                 }
    1183 #endif
    1184                 else
    1185                 {
    1186                     pcszParavirtProvider = "None";
    1187                     fGimDeviceNeeded = false;
    1188                 }
    1189                 break;
    1190             }
    1191 
    1192             case ParavirtProvider_Legacy:
    1193             {
    1194                 if (fOsXGuest)
    1195                     pcszParavirtProvider = "Minimal";
    1196                 else
    1197                     pcszParavirtProvider = "None";
    1198                 fGimDeviceNeeded = false;
    1199                 break;
    1200             }
    12011165
    12021166            case ParavirtProvider_Minimal:
  • 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.

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