VirtualBox

Changeset 26290 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Feb 5, 2010 2:27:19 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
57359
Message:

Statistics interval controllable from within the guest from now on.

Location:
trunk/src/VBox
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/VMMDev/VMMDev.cpp

    r26289 r26290  
    13921392        }
    13931393
    1394         case VMMDevReq_GetStatisticsChangeRequest:
    1395         {
    1396             Log(("VMMDevReq_GetStatisticsChangeRequest\n"));
    1397             if (pRequestHeader->size != sizeof(VMMDevGetStatisticsChangeRequest))
    1398             {
    1399                 AssertFailed();
    1400                 pRequestHeader->rc = VERR_INVALID_PARAMETER;
    1401             }
    1402             else
    1403             {
    1404                 VMMDevGetStatisticsChangeRequest *statIntervalChangeRequest = (VMMDevGetStatisticsChangeRequest*)pRequestHeader;
    1405                 /* just pass on the information */
    1406                 Log(("VMMDev: returning statistics interval %d seconds\n", pThis->u32StatIntervalSize));
    1407                 statIntervalChangeRequest->u32StatInterval = pThis->u32StatIntervalSize;
    1408 
    1409                 if (statIntervalChangeRequest->eventAck == VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST)
    1410                 {
    1411                     /* Remember which mode the client has queried. */
    1412                     pThis->u32LastStatIntervalSize= pThis->u32StatIntervalSize;
    1413                 }
    1414 
    1415                 pRequestHeader->rc = VINF_SUCCESS;
    1416             }
    1417             break;
    1418         }
    1419 
    14201394        case VMMDevReq_ReportGuestStats:
    14211395        {
     
    20692043}
    20702044
    2071 static DECLCALLBACK(int) vmmdevSetStatisticsInterval(PPDMIVMMDEVPORT pInterface, uint32_t ulStatInterval)
    2072 {
    2073     VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    2074     PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    2075 
    2076     /* Verify that the new resolution is different and that guest does not yet know about it. */
    2077     bool fSame = (pThis->u32LastStatIntervalSize == ulStatInterval);
    2078 
    2079     Log(("vmmdevSetStatisticsInterval: old=%d. new=%d\n", pThis->u32LastStatIntervalSize, ulStatInterval));
    2080 
    2081     if (!fSame)
    2082     {
    2083         /* we could validate the information here but hey, the guest can do that as well! */
    2084         pThis->u32StatIntervalSize = ulStatInterval;
    2085 
    2086         /* IRQ so the guest knows what's going on */
    2087         VMMDevNotifyGuest (pThis, VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST);
    2088     }
    2089 
    2090     PDMCritSectLeave(&pThis->CritSect);
    2091     return VINF_SUCCESS;
    2092 }
    2093 
    20942045
    20952046static DECLCALLBACK(int) vmmdevSetCredentials(PPDMIVMMDEVPORT pInterface, const char *pszUsername,
     
    24792430    /* disabled memory ballooning */
    24802431    pThis->u32LastMemoryBalloonSize = 0;
    2481 
    2482     /* disabled statistics updating */
    2483     pThis->u32LastStatIntervalSize = 0;
    24842432
    24852433    /* Clear the "HGCM event enabled" flag so the event can be automatically reenabled.  */
     
    25932541    pThis->IPort.pfnRequestSeamlessChange  = vmmdevRequestSeamlessChange;
    25942542    pThis->IPort.pfnSetMemoryBalloon       = vmmdevSetMemoryBalloon;
    2595     pThis->IPort.pfnSetStatisticsInterval  = vmmdevSetStatisticsInterval;
    25962543    pThis->IPort.pfnVRDPChange             = vmmdevVRDPChange;
    25972544    pThis->IPort.pfnCpuHotUnplug           = vmmdevCpuHotUnplug;
  • trunk/src/VBox/Main/GuestImpl.cpp

    r26235 r26290  
    8282        mMemoryBalloonSize = 0;                     /* Default is no ballooning */
    8383
    84     ULONG aStatUpdateInterval;
    85     ret = mParent->machine()->COMGETTER(StatisticsUpdateInterval)(&aStatUpdateInterval);
    86     if (ret == S_OK)
    87         mStatUpdateInterval = aStatUpdateInterval;
    88     else
    89         mStatUpdateInterval = 0;                    /* Default is not to report guest statistics at all */
    90 
    9184    /* invalidate all stats */
    9285    for (int i=0;i<GuestStatisticType_MaxVal;i++)
     
    225218}
    226219
    227 STDMETHODIMP Guest::COMGETTER(StatisticsUpdateInterval) (ULONG *aUpdateInterval)
    228 {
    229     CheckComArgOutPointerValid(aUpdateInterval);
    230 
    231     AutoCaller autoCaller(this);
    232     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    233 
    234     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    235 
    236     *aUpdateInterval = mStatUpdateInterval;
    237 
    238     return S_OK;
    239 }
    240 
    241 STDMETHODIMP Guest::COMSETTER(StatisticsUpdateInterval) (ULONG aUpdateInterval)
    242 {
    243     AutoCaller autoCaller(this);
    244     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    245 
    246     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    247 
    248     HRESULT ret = mParent->machine()->COMSETTER(StatisticsUpdateInterval)(aUpdateInterval);
    249     if (ret == S_OK)
    250     {
    251         mStatUpdateInterval = aUpdateInterval;
    252         /* forward the information to the VMM device */
    253         VMMDev *vmmDev = mParent->getVMMDev();
    254         if (vmmDev)
    255             vmmDev->getVMMDevPort()->pfnSetStatisticsInterval(vmmDev->getVMMDevPort(), aUpdateInterval);
    256     }
    257 
    258     return ret;
    259 }
    260220
    261221STDMETHODIMP Guest::SetCredentials(IN_BSTR aUserName, IN_BSTR aPassword,
  • trunk/src/VBox/Main/MachineImpl.cpp

    r26235 r26290  
    157157    mCPUHotPlugEnabled = false;
    158158    mMemoryBalloonSize = 0;
    159     mStatisticsUpdateInterval = 0;
    160159    mVRAMSize = 8;
    161160    mAccelerate3DEnabled = false;
     
    11591158    return S_OK;
    11601159}
    1161 
    1162 /** @todo this method should not be public */
    1163 STDMETHODIMP Machine::COMGETTER(StatisticsUpdateInterval) (ULONG *statisticsUpdateInterval)
    1164 {
    1165     if (!statisticsUpdateInterval)
    1166         return E_POINTER;
    1167 
    1168     AutoCaller autoCaller(this);
    1169     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1170 
    1171     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    1172 
    1173     *statisticsUpdateInterval = mHWData->mStatisticsUpdateInterval;
    1174 
    1175     return S_OK;
    1176 }
    1177 
    1178 /** @todo this method should not be public */
    1179 STDMETHODIMP Machine::COMSETTER(StatisticsUpdateInterval) (ULONG statisticsUpdateInterval)
    1180 {
    1181     AutoCaller autoCaller(this);
    1182     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1183 
    1184     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    1185 
    1186     HRESULT rc = checkStateDependency(MutableStateDep);
    1187     if (FAILED(rc)) return rc;
    1188 
    1189     setModified(IsModified_MachineData);
    1190     mHWData.backup();
    1191     mHWData->mStatisticsUpdateInterval = statisticsUpdateInterval;
    1192 
    1193     return S_OK;
    1194 }
    1195 
    11961160
    11971161STDMETHODIMP Machine::COMGETTER(Accelerate3DEnabled)(BOOL *enabled)
     
    62726236        // guest settings
    62736237        mHWData->mMemoryBalloonSize = data.ulMemoryBalloonSize;
    6274         mHWData->mStatisticsUpdateInterval = data.ulStatisticsUpdateInterval;
    62756238
    62766239#ifdef VBOX_WITH_GUEST_PROPS
     
    73067269        /* Guest */
    73077270        data.ulMemoryBalloonSize = mHWData->mMemoryBalloonSize;
    7308         data.ulStatisticsUpdateInterval = mHWData->mStatisticsUpdateInterval;
    73097271
    73107272        // guest properties
  • trunk/src/VBox/Main/VMMDevInterface.cpp

    r26166 r26290  
    403403}
    404404
    405 /**
    406  * Request the statistics interval
    407  *
    408  * @returns VBox status code.
    409  * @param   pInterface          Pointer to this interface.
    410  * @param   pulInterval         Pointer to interval in seconds
    411  * @thread  The emulation thread.
    412  */
    413 DECLCALLBACK(int) vmmdevQueryStatisticsInterval(PPDMIVMMDEVCONNECTOR pInterface, uint32_t *pulInterval)
    414 {
    415     PDRVMAINVMMDEV pDrv = PDMIVMMDEVCONNECTOR_2_MAINVMMDEV(pInterface);
    416     ULONG          val = 0;
    417 
    418     if (!pulInterval)
    419         return VERR_INVALID_POINTER;
    420 
    421     /* store that information in IGuest */
    422     Guest* guest = pDrv->pVMMDev->getParent()->getGuest();
    423     Assert(guest);
    424     if (!guest)
    425         return VERR_INVALID_PARAMETER; /** @todo wrong error */
    426 
    427     guest->COMGETTER(StatisticsUpdateInterval)(&val);
    428     *pulInterval = val;
    429     return VINF_SUCCESS;
    430 }
    431405
    432406/**
     
    736710    pData->Connector.pfnQueryVisibleRegion            = vmmdevQueryVisibleRegion;
    737711    pData->Connector.pfnReportStatistics              = vmmdevReportStatistics;
    738     pData->Connector.pfnQueryStatisticsInterval       = vmmdevQueryStatisticsInterval;
    739712    pData->Connector.pfnChangeMemoryBalloon           = vmmdevChangeMemoryBalloon;
    740713
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r26241 r26290  
    43714371    </attribute>
    43724372
    4373     <attribute name="statisticsUpdateInterval" type="unsigned long">
    4374       <desc>Initial interval to update guest statistics in seconds.</desc>
    4375     </attribute>
    4376 
    43774373    <attribute name="VRAMSize" type="unsigned long">
    43784374      <desc>Video memory size in megabytes.</desc>
     
    83118307    <attribute name="memoryBalloonSize" type="unsigned long">
    83128308      <desc>Guest system memory balloon size in megabytes.</desc>
    8313     </attribute>
    8314 
    8315     <attribute name="statisticsUpdateInterval" type="unsigned long">
    8316       <desc>Interval to update guest statistics in seconds.</desc>
    83178309    </attribute>
    83188310
  • trunk/src/VBox/Main/include/GuestImpl.h

    r23223 r26290  
    6565    STDMETHOD(COMGETTER(MemoryBalloonSize)) (ULONG *aMemoryBalloonSize);
    6666    STDMETHOD(COMSETTER(MemoryBalloonSize)) (ULONG aMemoryBalloonSize);
    67     STDMETHOD(COMGETTER(StatisticsUpdateInterval)) (ULONG *aUpdateInterval);
    68     STDMETHOD(COMSETTER(StatisticsUpdateInterval)) (ULONG aUpdateInterval);
    6967
    7068    // IGuest methods
     
    10199
    102100    ULONG mMemoryBalloonSize;
    103     ULONG mStatUpdateInterval;
    104101
    105102    ULONG mCurrentGuestStat[GuestStatisticType_MaxVal];
  • trunk/src/VBox/Main/include/MachineImpl.h

    r26171 r26290  
    269269        ULONG          mMemorySize;
    270270        ULONG          mMemoryBalloonSize;
    271         ULONG          mStatisticsUpdateInterval;
    272271        ULONG          mVRAMSize;
    273272        ULONG          mMonitorCount;
     
    376375    STDMETHOD(COMGETTER(MemoryBalloonSize))(ULONG *memoryBalloonSize);
    377376    STDMETHOD(COMSETTER(MemoryBalloonSize))(ULONG memoryBalloonSize);
    378     STDMETHOD(COMGETTER(StatisticsUpdateInterval))(ULONG *statisticsUpdateInterval);
    379     STDMETHOD(COMSETTER(StatisticsUpdateInterval))(ULONG statisticsUpdateInterval);
    380377    STDMETHOD(COMGETTER(VRAMSize))(ULONG *memorySize);
    381378    STDMETHOD(COMSETTER(VRAMSize))(ULONG memorySize);
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