VirtualBox

Changeset 93470 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Jan 27, 2022 11:51:28 PM (3 years ago)
Author:
vboxsync
Message:

DbgPlugInDiggers,VMM,Main: Refactored the diggers and related interfaces to work via the VMM function table. Removed non-working tstVBoxDbg (needs proper COM now). bugref:10072

Location:
trunk/src/VBox/VMM/VMMR3
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CFGM.cpp

    r93444 r93470  
    6060#include <VBox/vmm/dbgf.h>
    6161#include <VBox/vmm/mm.h>
     62#include <VBox/vmm/vmm.h>
    6263#include "CFGMInternal.h"
    6364#include <VBox/vmm/vm.h>
    6465#include <VBox/vmm/uvm.h>
    65 #include <VBox/vmm/vmmr3vtable.h>
    6666#include <VBox/err.h>
    6767
  • trunk/src/VBox/VMM/VMMR3/DBGFOS.cpp

    r93115 r93470  
    2323#include <VBox/vmm/dbgf.h>
    2424#include <VBox/vmm/mm.h>
     25#include <VBox/vmm/vmm.h>
    2526#include "DBGFInternal.h"
    2627#include <VBox/vmm/uvm.h>
     
    116117    if (pUVM->dbgf.s.pCurOS)
    117118    {
    118         pUVM->dbgf.s.pCurOS->pReg->pfnTerm(pUVM, pUVM->dbgf.s.pCurOS->abData);
     119        pUVM->dbgf.s.pCurOS->pReg->pfnTerm(pUVM, VMMR3GetVTable(), pUVM->dbgf.s.pCurOS->abData);
    119120        pUVM->dbgf.s.pCurOS = NULL;
    120121    }
     
    144145        pUVM->dbgf.s.pOSHead = pOS->pNext;
    145146        if (pOS->pReg->pfnDestruct)
    146             pOS->pReg->pfnDestruct(pUVM, pOS->abData);
     147            pOS->pReg->pfnDestruct(pUVM, VMMR3GetVTable(), pOS->abData);
    147148
    148149        PDBGFOSEMTWRAPPER pFree = pOS->pWrapperHead;
     
    189190    pOS->pReg = pReg;
    190191
    191     int rc = pOS->pReg->pfnConstruct(pUVM, pOS->abData);
     192    int rc = pOS->pReg->pfnConstruct(pUVM, VMMR3GetVTable(), pOS->abData);
    192193    if (RT_SUCCESS(rc))
    193194    {
     
    200201    {
    201202        if (pOS->pReg->pfnDestruct)
    202             pOS->pReg->pfnDestruct(pUVM, pOS->abData);
     203            pOS->pReg->pfnDestruct(pUVM, VMMR3GetVTable(), pOS->abData);
    203204        MMR3HeapFree(pOS);
    204205    }
     
    291292     */
    292293    if (fWasCurOS)
    293         pOS->pReg->pfnTerm(pUVM, pOS->abData);
     294        pOS->pReg->pfnTerm(pUVM, VMMR3GetVTable(), pOS->abData);
    294295    if (pOS->pReg->pfnDestruct)
    295         pOS->pReg->pfnDestruct(pUVM, pOS->abData);
     296        pOS->pReg->pfnDestruct(pUVM, VMMR3GetVTable(), pOS->abData);
    296297
    297298    PDBGFOSEMTWRAPPER pFree = pOS->pWrapperHead;
     
    371372
    372373    for (PDBGFOS pNewOS = pUVM->dbgf.s.pOSHead; pNewOS; pNewOS = pNewOS->pNext)
    373         if (pNewOS->pReg->pfnProbe(pUVM, pNewOS->abData))
     374        if (pNewOS->pReg->pfnProbe(pUVM, VMMR3GetVTable(), pNewOS->abData))
    374375        {
    375376            int rc;
    376377            pUVM->dbgf.s.pCurOS = pNewOS;
    377378            if (pOldOS == pNewOS)
    378                 rc = pNewOS->pReg->pfnRefresh(pUVM, pNewOS->abData);
     379                rc = pNewOS->pReg->pfnRefresh(pUVM, VMMR3GetVTable(), pNewOS->abData);
    379380            else
    380381            {
    381382                if (pOldOS)
    382                     pOldOS->pReg->pfnTerm(pUVM, pNewOS->abData);
    383                 rc = pNewOS->pReg->pfnInit(pUVM, pNewOS->abData);
     383                    pOldOS->pReg->pfnTerm(pUVM, VMMR3GetVTable(), pNewOS->abData);
     384                rc = pNewOS->pReg->pfnInit(pUVM, VMMR3GetVTable(), pNewOS->abData);
    384385            }
    385386            if (pszName && cchName)
     
    392393    /* not found */
    393394    if (pOldOS)
    394         pOldOS->pReg->pfnTerm(pUVM, pOldOS->abData);
     395        pOldOS->pReg->pfnTerm(pUVM, VMMR3GetVTable(), pOldOS->abData);
    395396
    396397    DBGF_OS_WRITE_UNLOCK(pUVM);
     
    463464        if (pszVersion && cchVersion)
    464465        {
    465             int rc2 = pUVM->dbgf.s.pCurOS->pReg->pfnQueryVersion(pUVM, pUVM->dbgf.s.pCurOS->abData, pszVersion, cchVersion);
     466            int rc2 = pUVM->dbgf.s.pCurOS->pReg->pfnQueryVersion(pUVM, VMMR3GetVTable(),  pUVM->dbgf.s.pCurOS->abData,
     467                                                                 pszVersion, cchVersion);
    466468            if (RT_FAILURE(rc2) || rc == VINF_SUCCESS)
    467469                rc = rc2;
     
    516518 * @interface_method_impl{DBGFOSIDMESG,pfnQueryKernelLog, Generic EMT wrapper.}
    517519 */
    518 static DECLCALLBACK(int) dbgfR3OSEmtIDmesg_QueryKernelLog(PDBGFOSIDMESG pThis, PUVM pUVM, uint32_t fFlags, uint32_t cMessages,
    519                                                           char *pszBuf, size_t cbBuf, size_t *pcbActual)
     520static DECLCALLBACK(int) dbgfR3OSEmtIDmesg_QueryKernelLog(PDBGFOSIDMESG pThis, PUVM pUVM, PCVMMR3VTABLE pVMM, uint32_t fFlags,
     521                                                          uint32_t cMessages, char *pszBuf, size_t cbBuf, size_t *pcbActual)
    520522{
    521523    PDBGFOSEMTWRAPPER pWrapper = RT_FROM_MEMBER(pThis, DBGFOSEMTWRAPPER, uWrapper.Dmesg);
     
    529531
    530532    return VMR3ReqPriorityCallWaitU(pWrapper->pUVM, 0 /*idDstCpu*/,
    531                                    (PFNRT)pWrapper->uDigger.pDmesg->pfnQueryKernelLog, 7,
    532                                     pWrapper->uDigger.pDmesg, pUVM, fFlags, cMessages, pszBuf, cbBuf, pcbActual);
     533                                   (PFNRT)pWrapper->uDigger.pDmesg->pfnQueryKernelLog, 8,
     534                                    pWrapper->uDigger.pDmesg, pUVM, pVMM, fFlags, cMessages, pszBuf, cbBuf, pcbActual);
    533535
    534536}
     
    538540 * @interface_method_impl{DBGFOSIWINNT,pfnQueryVersion, Generic EMT wrapper.}
    539541 */
    540 static DECLCALLBACK(int) dbgfR3OSEmtIWinNt_QueryVersion(PDBGFOSIWINNT pThis, PUVM pUVM, uint32_t *puVersMajor, uint32_t *puVersMinor,
    541                                                         uint32_t *puBuildNumber, bool *pf32Bit)
     542static DECLCALLBACK(int) dbgfR3OSEmtIWinNt_QueryVersion(PDBGFOSIWINNT pThis, PUVM pUVM, PCVMMR3VTABLE pVMM, uint32_t *puVersMajor,
     543                                                        uint32_t *puVersMinor, uint32_t *puBuildNumber, bool *pf32Bit)
    542544{
    543545    PDBGFOSEMTWRAPPER pWrapper = RT_FROM_MEMBER(pThis, DBGFOSEMTWRAPPER, uWrapper.WinNt);
     
    546548
    547549    return VMR3ReqPriorityCallWaitU(pWrapper->pUVM, 0 /*idDstCpu*/,
    548                                    (PFNRT)pWrapper->uDigger.pWinNt->pfnQueryVersion, 6,
    549                                     pWrapper->uDigger.pWinNt, pUVM, puVersMajor, puVersMinor,
     550                                   (PFNRT)pWrapper->uDigger.pWinNt->pfnQueryVersion, 7,
     551                                    pWrapper->uDigger.pWinNt, pUVM, pVMM, puVersMajor, puVersMinor,
    550552                                    puBuildNumber, pf32Bit);
    551553}
     
    555557 * @interface_method_impl{DBGFOSIWINNT,pfnQueryKernelPtrs, Generic EMT wrapper.}
    556558 */
    557 static DECLCALLBACK(int) dbgfR3OSEmtIWinNt_QueryKernelPtrs(PDBGFOSIWINNT pThis, PUVM pUVM,
     559static DECLCALLBACK(int) dbgfR3OSEmtIWinNt_QueryKernelPtrs(PDBGFOSIWINNT pThis, PUVM pUVM, PCVMMR3VTABLE pVMM,
    558560                                                           PRTGCUINTPTR pGCPtrKernBase, PRTGCUINTPTR pGCPtrPsLoadedModuleList)
    559561{
     
    563565
    564566    return VMR3ReqPriorityCallWaitU(pWrapper->pUVM, 0 /*idDstCpu*/,
    565                                    (PFNRT)pWrapper->uDigger.pWinNt->pfnQueryKernelPtrs, 4,
    566                                     pWrapper->uDigger.pWinNt, pUVM, pGCPtrKernBase, pGCPtrPsLoadedModuleList);
     567                                   (PFNRT)pWrapper->uDigger.pWinNt->pfnQueryKernelPtrs, 5,
     568                                    pWrapper->uDigger.pWinNt, pUVM, pVMM, pGCPtrKernBase, pGCPtrPsLoadedModuleList);
    567569}
    568570
     
    571573 * @interface_method_impl{DBGFOSIWINNT,pfnQueryKpcrForVCpu, Generic EMT wrapper.}
    572574 */
    573 static DECLCALLBACK(int) dbgfR3OSEmtIWinNt_QueryKpcrForVCpu(struct DBGFOSIWINNT *pThis, PUVM pUVM, VMCPUID idCpu,
    574                                                             PRTGCUINTPTR pKpcr, PRTGCUINTPTR pKpcrb)
     575static DECLCALLBACK(int) dbgfR3OSEmtIWinNt_QueryKpcrForVCpu(struct DBGFOSIWINNT *pThis, PUVM pUVM, PCVMMR3VTABLE pVMM,
     576                                                            VMCPUID idCpu, PRTGCUINTPTR pKpcr, PRTGCUINTPTR pKpcrb)
    575577{
    576578    PDBGFOSEMTWRAPPER pWrapper = RT_FROM_MEMBER(pThis, DBGFOSEMTWRAPPER, uWrapper.WinNt);
     
    579581
    580582    return VMR3ReqPriorityCallWaitU(pWrapper->pUVM, 0 /*idDstCpu*/,
    581                                     (PFNRT)pWrapper->uDigger.pWinNt->pfnQueryKpcrForVCpu, 5,
    582                                     pWrapper->uDigger.pWinNt, pUVM, idCpu, pKpcr, pKpcrb);
     583                                    (PFNRT)pWrapper->uDigger.pWinNt->pfnQueryKpcrForVCpu, 6,
     584                                    pWrapper->uDigger.pWinNt, pUVM, pVMM, idCpu, pKpcr, pKpcrb);
    583585}
    584586
     
    587589 * @interface_method_impl{DBGFOSIWINNT,pfnQueryCurThrdForVCpu, Generic EMT wrapper.}
    588590 */
    589 static DECLCALLBACK(int) dbgfR3OSEmtIWinNt_QueryCurThrdForVCpu(struct DBGFOSIWINNT *pThis, PUVM pUVM, VMCPUID idCpu,
    590                                                                PRTGCUINTPTR pCurThrd)
     591static DECLCALLBACK(int) dbgfR3OSEmtIWinNt_QueryCurThrdForVCpu(struct DBGFOSIWINNT *pThis, PUVM pUVM, PCVMMR3VTABLE pVMM,
     592                                                               VMCPUID idCpu, PRTGCUINTPTR pCurThrd)
    591593{
    592594    PDBGFOSEMTWRAPPER pWrapper = RT_FROM_MEMBER(pThis, DBGFOSEMTWRAPPER, uWrapper.WinNt);
     
    595597
    596598    return VMR3ReqPriorityCallWaitU(pWrapper->pUVM, 0 /*idDstCpu*/,
    597                                     (PFNRT)pWrapper->uDigger.pWinNt->pfnQueryCurThrdForVCpu, 4,
    598                                     pWrapper->uDigger.pWinNt, pUVM, idCpu, pCurThrd);
     599                                    (PFNRT)pWrapper->uDigger.pWinNt->pfnQueryCurThrdForVCpu, 5,
     600                                    pWrapper->uDigger.pWinNt, pUVM, pVMM, idCpu, pCurThrd);
    599601}
    600602
     
    622624    {
    623625        void *pvDiggerIf;
    624         pvDiggerIf = pOS->pReg->pfnQueryInterface(pUVM, pUVM->dbgf.s.pCurOS->abData, enmIf);
     626        pvDiggerIf = pOS->pReg->pfnQueryInterface(pUVM, VMMR3GetVTable(), pUVM->dbgf.s.pCurOS->abData, enmIf);
    625627        if (pvDiggerIf)
    626628        {
     
    730732        PDBGFOS pOS = pUVM->dbgf.s.pCurOS;
    731733        if (pOS)
    732             rc = pOS->pReg->pfnStackUnwindAssist(pUVM, pUVM->dbgf.s.pCurOS->abData, idCpu, pFrame,
     734            rc = pOS->pReg->pfnStackUnwindAssist(pUVM, VMMR3GetVTable(), pUVM->dbgf.s.pCurOS->abData, idCpu, pFrame,
    733735                                                 pState, pInitialCtx, hAs, puScratch);
    734736        DBGF_OS_READ_UNLOCK(pUVM);
  • trunk/src/VBox/VMM/VMMR3/DBGFR3PlugIn.cpp

    r93115 r93470  
    2323#include <VBox/vmm/dbgf.h>
    2424#include <VBox/vmm/mm.h>
     25#include <VBox/vmm/vmm.h>
    2526#include "DBGFInternal.h"
    2627#include <VBox/vmm/uvm.h>
     
    367368         * Try initialize it.
    368369         */
    369         rc = pPlugIn->pfnEntry(DBGFPLUGINOP_INIT, pUVM, VBOX_VERSION);
     370        rc = pPlugIn->pfnEntry(DBGFPLUGINOP_INIT, pUVM, VMMR3GetVTable(), VBOX_VERSION);
    370371        if (RT_SUCCESS(rc))
    371372        {
     
    538539            pUVM->dbgf.s.pPlugInHead = pPlugIn->pNext;
    539540
    540         pPlugIn->pfnEntry(DBGFPLUGINOP_TERM, pUVM, 0);
     541        pPlugIn->pfnEntry(DBGFPLUGINOP_TERM, pUVM, VMMR3GetVTable(), 0);
    541542        RTLdrClose(pPlugIn->hLdrMod);
    542543
     
    568569        pUVM->dbgf.s.pPlugInHead = pPlugin->pNext;
    569570
    570         pPlugin->pfnEntry(DBGFPLUGINOP_TERM, pUVM, 0);
     571        pPlugin->pfnEntry(DBGFPLUGINOP_TERM, pUVM, VMMR3GetVTable(), 0);
    571572
    572573        int rc2 = RTLdrClose(pPlugin->hLdrMod);
  • trunk/src/VBox/VMM/VMMR3/SSM.cpp

    r93444 r93470  
    150150#include <VBox/vmm/pdmcritsect.h>
    151151#include <VBox/vmm/mm.h>
     152#include <VBox/vmm/vmm.h>
    152153#include "SSMInternal.h"
    153154#include <VBox/vmm/vm.h>
    154155#include <VBox/vmm/uvm.h>
    155 #include <VBox/vmm/vmmr3vtable.h>
    156156#include <VBox/err.h>
    157157#include <VBox/log.h>
  • trunk/src/VBox/VMM/VMMR3/VM.cpp

    r93444 r93470  
    6868#include "VMInternal.h"
    6969#include <VBox/vmm/vmcc.h>
    70 #include <VBox/vmm/vmmr3vtable.h>
    7170
    7271#include <VBox/sup.h>
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