VirtualBox

Changeset 77910 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Mar 27, 2019 11:33:01 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
129623
Message:

Main: bugref:7929: Added ability to change the priority of the VM process

Location:
trunk/src/VBox/Main/src-client
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/ConsoleImpl.cpp

    r77814 r77910  
    65526552}
    65536553
     6554HRESULT Console::i_onVMProcessPriorityChange(VMProcPriority_T priority)
     6555{
     6556    HRESULT rc = S_OK;
     6557
     6558    AutoCaller autoCaller(this);
     6559    if (FAILED(autoCaller.rc()))
     6560        return autoCaller.rc();
     6561
     6562    RTPROCPRIORITY enmProcPriority = RTPROCPRIORITY_DEFAULT;
     6563    switch(priority)
     6564    {
     6565        case VMProcPriority_Default:
     6566            enmProcPriority = RTPROCPRIORITY_DEFAULT;
     6567            break;
     6568        case VMProcPriority_Flat:
     6569            enmProcPriority = RTPROCPRIORITY_FLAT;
     6570            break;
     6571        case VMProcPriority_Low:
     6572            enmProcPriority = RTPROCPRIORITY_LOW;
     6573            break;
     6574        case VMProcPriority_Normal:
     6575            enmProcPriority = RTPROCPRIORITY_NORMAL;
     6576            break;
     6577        case VMProcPriority_High:
     6578            enmProcPriority = RTPROCPRIORITY_HIGH;
     6579            break;
     6580        default:
     6581            return setError(E_INVALIDARG, tr("Unsupported priority type (%d)"), priority);
     6582    }
     6583    int vrc = RTProcSetPriority(enmProcPriority);
     6584    if (RT_FAILURE(vrc))
     6585        rc = setErrorBoth(VBOX_E_VM_ERROR, vrc, tr("Could not set the priority of the process (%Rrc). Try to set it when VM is not started."), vrc);
     6586
     6587    return rc;
     6588}
    65546589
    65556590/**
     
    1012210157        pMachine->COMGETTER(CPUCount)(&cCpus);
    1012310158
     10159        VMProcPriority_T enmVMPriority = VMProcPriority_Default;
     10160        pMachine->COMGETTER(VMProcessPriority)(&enmVMPriority);
     10161
    1012410162        /*
    1012510163         * Create the VM
     
    1012910167         */
    1013010168        alock.release();
     10169
     10170        if (enmVMPriority != VMProcPriority_Default)
     10171            pConsole->i_onVMProcessPriorityChange(enmVMPriority);
    1013110172
    1013210173        PVM pVM;
  • trunk/src/VBox/Main/src-client/SessionImpl.cpp

    r76553 r77910  
    674674}
    675675
     676HRESULT Session::onVMProcessPriorityChange(VMProcPriority_T priority)
     677{
     678    LogFlowThisFunc(("\n"));
     679
     680    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
     681    AssertReturn(mState == SessionState_Locked, VBOX_E_INVALID_VM_STATE);
     682    AssertReturn(mType == SessionType_WriteLock, VBOX_E_INVALID_OBJECT_STATE);
     683#ifndef VBOX_COM_INPROC_API_CLIENT
     684    AssertReturn(mConsole, VBOX_E_INVALID_OBJECT_STATE);
     685
     686    return mConsole->i_onVMProcessPriorityChange(priority);
     687#else
     688    RT_NOREF(priority);
     689    return S_OK;
     690#endif
     691}
     692
    676693HRESULT Session::onCPUChange(ULONG aCpu, BOOL aAdd)
    677694{
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