Changeset 84494 in vbox
- Timestamp:
- May 25, 2020 11:09:52 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 138221
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/DBGFAllTracer.cpp
r84488 r84494 154 154 } 155 155 156 157 #ifdef IN_RING3 158 /** 159 * Posts a single event descriptor to the ring buffer of the given tracer instance - R3 only variant 160 * (used for the register/deregister event source events currently). 161 * 162 * @returns VBox status code. 163 * @param pVM The current context VM instance data. 164 * @param pThisCC The event tracer instance current context data. 165 * @param hEvtSrc The event source for the posted event. 166 * @param enmTraceEvt The trace event type posted. 167 * @param pvEvtDesc The event descriptor to copy after the header. 168 * @param cbEvtDesc Event descriptor size in bytes. 169 * @param pidEvt Where to store the assigned event ID, optional. 170 */ 171 DECLHIDDEN(int) dbgfTracerR3EvtPostSingle(PVMCC pVM, PDBGFTRACERINSCC pThisCC, DBGFTRACEREVTSRC hEvtSrc, 172 DBGFTRACEREVT enmTraceEvt, const void *pvEvtDesc, size_t cbEvtDesc, 173 uint64_t *pidEvt) 174 { 175 return dbgfTracerEvtPostEx(pVM, pThisCC, hEvtSrc, enmTraceEvt, DBGF_TRACER_EVT_HDR_ID_INVALID, 176 pvEvtDesc, cbEvtDesc, pidEvt); 177 } 178 #endif 156 179 157 180 /** -
trunk/src/VBox/VMM/VMMR3/DBGFR3Tracer.cpp
r84488 r84494 55 55 /** The event descriptors written to the trace log. */ 56 56 57 static const RTTRACELOGEVTDESC g_EvtSrcRegisterEvtDesc = 58 { 59 "EvtSrc.Register", 60 "An event soruce was registered", 61 RTTRACELOGEVTSEVERITY_DEBUG, 62 0, 63 NULL 64 }; 65 66 67 static 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 57 77 static const RTTRACELOGEVTITEMDESC g_DevMmioMapEvtItems[] = 58 78 { … … 444 464 switch (pEvtHdr->enmEvt) 445 465 { 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 } 446 478 case DBGFTRACEREVT_MMIO_MAP: 447 479 { 448 480 PCDBGFTRACEREVTMMIOMAP pEvtMmioMap = (PCDBGFTRACEREVTMMIOMAP)(pEvtHdr + 1); 449 481 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*/, 451 483 pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtMmioMap->hMmioRegion, pEvtMmioMap->GCPhysMmioBase); 452 484 break; … … 456 488 PCDBGFTRACEREVTMMIOUNMAP pEvtMmioUnmap = (PCDBGFTRACEREVTMMIOUNMAP)(pEvtHdr + 1); 457 489 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*/, 459 491 pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtMmioUnmap->hMmioRegion); 460 492 break; … … 469 501 ? &g_DevMmioReadEvtDesc 470 502 : &g_DevMmioWriteEvtDesc, 471 RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,503 0 /*fFlags*/, 472 504 pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtMmioRw->hMmioRegion, pEvtMmioRw->offMmio, 473 505 pEvtMmioRw->cbXfer, pEvtMmioRw->u64Val); … … 478 510 PCDBGFTRACEREVTMMIOFILL pEvtMmioFill = (PCDBGFTRACEREVTMMIOFILL)(pEvtHdr + 1); 479 511 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*/, 482 513 pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtMmioFill->hMmioRegion, pEvtMmioFill->offMmio, 483 514 pEvtMmioFill->cbItem, pEvtMmioFill->cItems, pEvtMmioFill->u32Item); … … 488 519 PCDBGFTRACEREVTIOPORTMAP pEvtIoPortMap = (PCDBGFTRACEREVTIOPORTMAP)(pEvtHdr + 1); 489 520 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*/, 491 522 pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIoPortMap->hIoPorts, pEvtIoPortMap->IoPortBase); 492 523 break; … … 496 527 PCDBGFTRACEREVTIOPORTUNMAP pEvtIoPortUnmap = (PCDBGFTRACEREVTIOPORTUNMAP)(pEvtHdr + 1); 497 528 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*/, 499 530 pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIoPortUnmap->hIoPorts); 500 531 break; … … 509 540 ? &g_DevIoPortReadEvtDesc 510 541 : &g_DevIoPortWriteEvtDesc, 511 RTTRACELOG_WR_ADD_EVT_F_GRP_START | RTTRACELOG_WR_ADD_EVT_F_GRP_FINISH,542 0 /*fFlags*/, 512 543 pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIoPortRw->hIoPorts, pEvtIoPortRw->offPort, 513 544 pEvtIoPortRw->cbXfer, pEvtIoPortRw->u32Val); … … 518 549 PCDBGFTRACEREVTIRQ pEvtIrq = (PCDBGFTRACEREVTIRQ)(pEvtHdr + 1); 519 550 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*/, 523 552 pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIrq->iIrq, pEvtIrq->fIrqLvl); 524 553 break; … … 528 557 PCDBGFTRACEREVTIOAPICMSI pEvtIoApicMsi = (PCDBGFTRACEREVTIOAPICMSI)(pEvtHdr + 1); 529 558 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*/, 533 560 pEvtHdr->idEvt, pEvtHdr->hEvtSrc, pEvtIoApicMsi->GCPhys, pEvtIoApicMsi->u32Val); 534 561 break; … … 893 920 PDBGFTRACERINSR3 pThis = pUVM->dbgf.s.pTracerR3; 894 921 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; 897 930 } 898 931 … … 910 943 AssertReturn(hEvtSrc != NIL_DBGFTRACEREVTSRC, VERR_INVALID_HANDLE); 911 944 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 -
trunk/src/VBox/VMM/include/DBGFInternal.h
r84488 r84494 67 67 /** Invalid type. */ 68 68 DBGFTRACEREVT_INVALID = 0, 69 /** Register event source event. */ 70 DBGFTRACEREVT_SRC_REGISTER, 71 /** Deregister event source event. */ 72 DBGFTRACEREVT_SRC_DEREGISTER, 69 73 /** MMIO map region event. */ 70 74 DBGFTRACEREVT_MMIO_MAP, … … 471 475 } DBGFTRACERINSRC; 472 476 477 478 #ifdef IN_RING3 479 DECLHIDDEN(int) dbgfTracerR3EvtPostSingle(PVMCC pVM, PDBGFTRACERINSCC pThisCC, DBGFTRACEREVTSRC hEvtSrc, 480 DBGFTRACEREVT enmTraceEvt, const void *pvEvtDesc, size_t cbEvtDesc, 481 uint64_t *pidEvt); 482 #endif 473 483 474 484 /** VMM Debugger Command. */
Note:
See TracChangeset
for help on using the changeset viewer.