VirtualBox

Changeset 24315 in vbox


Ignore:
Timestamp:
Nov 4, 2009 11:12:48 AM (15 years ago)
Author:
vboxsync
Message:

Added methods to remove cpuid leafs

Location:
trunk/src/VBox/Main
Files:
3 edited

Legend:

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

    r24313 r24315  
    14851485}
    14861486
     1487STDMETHODIMP Machine::RemoveCpuIdLeaf(ULONG id)
     1488{
     1489    AutoCaller autoCaller(this);
     1490    CheckComRCReturnRC(autoCaller.rc());
     1491
     1492    AutoWriteLock alock(this);
     1493
     1494    HRESULT rc = checkStateDependency(MutableStateDep);
     1495    CheckComRCReturnRC(rc);
     1496
     1497    switch(id)
     1498    {
     1499    case 0x0:
     1500    case 0x1:
     1501    case 0x2:
     1502    case 0x3:
     1503    case 0x4:
     1504    case 0x5:
     1505    case 0x6:
     1506    case 0x7:
     1507    case 0x8:
     1508    case 0x9:
     1509    case 0xA:
     1510        AssertRelease(id < RT_ELEMENTS(mHWData->mCpuIdStdLeafs));
     1511        /* Invalidate leaf. */
     1512        mHWData->mCpuIdStdLeafs[id].ulId = -1
     1513        break;
     1514
     1515    case 0x80000000:
     1516    case 0x80000001:
     1517    case 0x80000002:
     1518    case 0x80000003:
     1519    case 0x80000004:
     1520    case 0x80000005:
     1521    case 0x80000006:
     1522    case 0x80000007:
     1523    case 0x80000008:
     1524    case 0x80000009:
     1525    case 0x8000000A:
     1526        AssertRelease(id - 0x80000000 < RT_ELEMENTS(mHWData->mCpuIdExtLeafs));
     1527        /* Invalidate leaf. */
     1528        mHWData->mCpuIdExtLeafs[id - 0x80000000].ulId  = -1;
     1529        break;
     1530
     1531    default:
     1532        return E_INVALIDARG;
     1533    }
     1534    return S_OK;
     1535}
     1536
     1537STDMETHODIMP Machine::removeAllCpuIdLeafs()
     1538{
     1539    AutoCaller autoCaller(this);
     1540    CheckComRCReturnRC(autoCaller.rc());
     1541
     1542    AutoWriteLock alock(this);
     1543
     1544    HRESULT rc = checkStateDependency(MutableStateDep);
     1545    CheckComRCReturnRC(rc);
     1546
     1547    /* Invalidate all standard leafs. */
     1548    for (unsigned i = 0; i < RT_ELEMENTS(mHWData->mCpuIdStdLeafs); i++)
     1549        mHWData->mCpuIdStdLeafs[id].ulId  = -1;
     1550
     1551    /* Invalidate all extended leafs. */
     1552    for (unsigned i = 0; i < RT_ELEMENTS(mHWData->mCpuIdExtLeafs); i++)
     1553        mHWData->mCpuIdExtLeafs[id].ulId = -1;
     1554
     1555    return S_OK;
     1556}
    14871557
    14881558STDMETHODIMP Machine::GetHWVirtExProperty(HWVirtExPropertyType_T property, BOOL *aVal)
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r24301 r24315  
    40974097  <interface
    40984098     name="IMachine" extends="$unknown"
    4099      uuid="c9e6bf40-f415-4a59-bb86-5190d93e49f6"
     4099     uuid="e2e5bab4-16ff-4ef4-b9df-f0b4433c1d1b"
    41004100     wsmap="managed"
    41014101     >
     
    52465246    </method>
    52475247
     5248    <method name="removeCpuIdLeaf" const="yes">
     5249      <desc>
     5250        Removes the virtual CPU cpuid leaf for the specified index
     5251
     5252        <result name="E_INVALIDARG">
     5253          Invalid id.
     5254        </result>
     5255
     5256      </desc>
     5257      <param name="id" type="unsigned long" dir="in">
     5258        <desc>
     5259          Cpuid leaf index.
     5260        </desc>
     5261      </param>
     5262    </method>
     5263
     5264    <method name="removeAllCpuIdLeafs" const="yes">
     5265      <desc>
     5266        Removes all the virtual CPU cpuid leafs
     5267      </desc>
     5268    </method>
     5269
    52485270    <method name="getHWVirtExProperty" const="yes">
    52495271      <desc>
  • trunk/src/VBox/Main/include/MachineImpl.h

    r24309 r24315  
    599599    STDMETHOD(GetCpuIdLeaf)(ULONG id, ULONG *aValEax, ULONG *aValEbx, ULONG *aValEcx, ULONG *aValEdx);
    600600    STDMETHOD(SetCpuIdLeaf)(ULONG id, ULONG aValEax, ULONG aValEbx, ULONG aValEcx, ULONG aValEdx);
     601    STDMETHOD(RemoveCpuIdLeaf)(ULONG id);
     602    STDMETHOD(RemoveAllCpuIdLeafs)();
    601603    STDMETHOD(GetHWVirtExProperty)(HWVirtExPropertyType_T property, BOOL *aVal);
    602604    STDMETHOD(SetHWVirtExProperty)(HWVirtExPropertyType_T property, BOOL aVal);
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