VirtualBox

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


Ignore:
Timestamp:
May 25, 2020 11:09:52 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
138221
Message:

VMM/DBGFTracer: Add events when an event source gets registered/deregistered and proper grouping for events caused by the event source

File:
1 edited

Legend:

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

    r84488 r84494  
    5555/** The event descriptors written to the trace log. */
    5656
     57static const RTTRACELOGEVTDESC g_EvtSrcRegisterEvtDesc =
     58{
     59    "EvtSrc.Register",
     60    "An event soruce was registered",
     61    RTTRACELOGEVTSEVERITY_DEBUG,
     62    0,
     63    NULL
     64};
     65
     66
     67static const RTTRACELOGEVTDESC g_EvtSrcDeregisterEvtDesc =
     68{
     69    "EvtSrc.Deregister",
     70    "An event soruce was de-registered",
     71    RTTRACELOGEVTSEVERITY_DEBUG,
     72    0,
     73    NULL
     74};
     75
     76
    5777static const RTTRACELOGEVTITEMDESC g_DevMmioMapEvtItems[] =
    5878{
     
    444464    switch (pEvtHdr->enmEvt)
    445465    {
     466        case DBGFTRACEREVT_SRC_REGISTER:
     467        {
     468            rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_EvtSrcRegisterEvtDesc, RTTRACELOG_WR_ADD_EVT_F_GRP_START,
     469                                     pEvtHdr->hEvtSrc, 0 /*uParentGrpId*/);
     470            break;
     471        }
     472        case DBGFTRACEREVT_SRC_DEREGISTER:
     473        {
     474            rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_EvtSrcDeregisterEvtDesc, RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     475                                     pEvtHdr->hEvtSrc, 0 /*uParentGrpId*/);
     476            break;
     477        }
    446478        case DBGFTRACEREVT_MMIO_MAP:
    447479        {
    448480            PCDBGFTRACEREVTMMIOMAP pEvtMmioMap = (PCDBGFTRACEREVTMMIOMAP)(pEvtHdr + 1);
    449481
    450             rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevMmioMapEvtDesc, RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     482            rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevMmioMapEvtDesc, 0 /*fFlags*/,
    451483                                     pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtMmioMap->hMmioRegion, pEvtMmioMap->GCPhysMmioBase);
    452484            break;
     
    456488            PCDBGFTRACEREVTMMIOUNMAP pEvtMmioUnmap = (PCDBGFTRACEREVTMMIOUNMAP)(pEvtHdr + 1);
    457489
    458             rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevMmioUnmapEvtDesc, RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     490            rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevMmioUnmapEvtDesc, 0 /*fFlags*/,
    459491                                     pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtMmioUnmap->hMmioRegion);
    460492            break;
     
    469501                                     ? &g_DevMmioReadEvtDesc
    470502                                     : &g_DevMmioWriteEvtDesc,
    471                                      RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     503                                     0 /*fFlags*/,
    472504                                     pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtMmioRw->hMmioRegion, pEvtMmioRw->offMmio,
    473505                                     pEvtMmioRw->cbXfer, pEvtMmioRw->u64Val);
     
    478510            PCDBGFTRACEREVTMMIOFILL pEvtMmioFill = (PCDBGFTRACEREVTMMIOFILL)(pEvtHdr + 1);
    479511
    480             rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevMmioFillEvtDesc,
    481                                      RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     512            rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevMmioFillEvtDesc, 0 /*fFlags*/,
    482513                                     pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtMmioFill->hMmioRegion, pEvtMmioFill->offMmio,
    483514                                     pEvtMmioFill->cbItem, pEvtMmioFill->cItems, pEvtMmioFill->u32Item);
     
    488519            PCDBGFTRACEREVTIOPORTMAP pEvtIoPortMap = (PCDBGFTRACEREVTIOPORTMAP)(pEvtHdr + 1);
    489520
    490             rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevIoPortMapEvtDesc, RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     521            rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevIoPortMapEvtDesc, 0 /*fFlags*/,
    491522                                     pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIoPortMap->hIoPorts, pEvtIoPortMap->IoPortBase);
    492523            break;
     
    496527            PCDBGFTRACEREVTIOPORTUNMAP pEvtIoPortUnmap = (PCDBGFTRACEREVTIOPORTUNMAP)(pEvtHdr + 1);
    497528
    498             rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevIoPortUnmapEvtDesc, RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     529            rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevIoPortUnmapEvtDesc, 0 /*fFlags*/,
    499530                                     pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIoPortUnmap->hIoPorts);
    500531            break;
     
    509540                                     ? &g_DevIoPortReadEvtDesc
    510541                                     : &g_DevIoPortWriteEvtDesc,
    511                                      RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     542                                     0 /*fFlags*/,
    512543                                     pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIoPortRw->hIoPorts, pEvtIoPortRw->offPort,
    513544                                     pEvtIoPortRw->cbXfer, pEvtIoPortRw->u32Val);
     
    518549            PCDBGFTRACEREVTIRQ pEvtIrq = (PCDBGFTRACEREVTIRQ)(pEvtHdr + 1);
    519550
    520             rc = RTTraceLogWrEvtAddL(pThis->hTraceLog,
    521                                      &g_DevIrqEvtDesc,
    522                                      RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     551            rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevIrqEvtDesc, 0 /*fFlags*/,
    523552                                     pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIrq->iIrq, pEvtIrq->fIrqLvl);
    524553            break;
     
    528557            PCDBGFTRACEREVTIOAPICMSI pEvtIoApicMsi = (PCDBGFTRACEREVTIOAPICMSI)(pEvtHdr + 1);
    529558
    530             rc = RTTraceLogWrEvtAddL(pThis->hTraceLog,
    531                                      &g_DevIrqEvtDesc,
    532                                      RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,
     559            rc = RTTraceLogWrEvtAddL(pThis->hTraceLog, &g_DevIrqEvtDesc, 0 /*fFlags*/,
    533560                                     pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIoApicMsi->GCPhys, pEvtIoApicMsi->u32Val);
    534561            break;
     
    893920    PDBGFTRACERINSR3 pThis = pUVM->dbgf.s.pTracerR3;
    894921
    895     *phEvtSrc = pThis->hEvtSrcNext++;
    896     return VINF_SUCCESS;
     922    DBGFTRACEREVTSRC hEvtSrc = ASMAtomicIncU64((volatile uint64_t *)&pThis->hEvtSrcNext) - 1;
     923
     924    int rc = dbgfTracerR3EvtPostSingle(pVM, pThis, hEvtSrc, DBGFTRACEREVT_SRC_REGISTER,
     925                                       NULL /*pvEvtDesc*/, 0 /*cbEvtDesc*/, NULL /*pidEvt*/);
     926    if (RT_SUCCESS(rc))
     927        *phEvtSrc = hEvtSrc;
     928
     929    return rc;
    897930}
    898931
     
    910943    AssertReturn(hEvtSrc != NIL_DBGFTRACEREVTSRC, VERR_INVALID_HANDLE);
    911944
    912     /** @todo Leave an event that the source deregistered. */
    913     return VINF_SUCCESS;
    914 }
    915 
     945    PUVM pUVM = pVM->pUVM;
     946    PDBGFTRACERINSR3 pThis = pUVM->dbgf.s.pTracerR3;
     947    return dbgfTracerR3EvtPostSingle(pVM, pThis, hEvtSrc, DBGFTRACEREVT_SRC_DEREGISTER,
     948                                     NULL /*pvEvtDesc*/, 0 /*cbEvtDesc*/, NULL /*pidEvt*/);
     949}
     950
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