Lines Matching defs:pUVM

81     PUVM        pUVM;
145 static int stamR3RegisterU(PUVM pUVM, void *pvSample, PFNSTAMR3CALLBACKRESET pfnReset, PFNSTAMR3CALLBACKPRINT pfnPrint,
157 static int stamR3EnumU(PUVM pUVM, const char *pszPat, bool fUpdateRing0, int (pfnCallback)(PSTAMDESC pDesc, void *pvArg), void *pvArg);
158 static void stamR3Ring0StatsRegisterU(PUVM pUVM);
159 static void stamR3Ring0StatsUpdateU(PUVM pUVM, const char *pszPat);
160 static void stamR3Ring0StatsUpdateMultiU(PUVM pUVM, const char * const *papszExpressions, unsigned cExpressions);
273 VMMR3DECL(int) STAMR3InitUVM(PUVM pUVM)
280 AssertCompile(sizeof(pUVM->stam.s) <= sizeof(pUVM->stam.padding));
281 AssertRelease(sizeof(pUVM->stam.s) <= sizeof(pUVM->stam.padding));
286 int rc = RTSemRWCreate(&pUVM->stam.s.RWSem);
289 RTListInit(&pUVM->stam.s.List);
298 RTSemRWDestroy(pUVM->stam.s.RWSem);
299 pUVM->stam.s.RWSem = NIL_RTSEMRW;
312 pUVM->stam.s.pRoot = pRoot;
319 stamR3Ring0StatsRegisterU(pUVM);
341 * @param pUVM Pointer to the user mode VM structure.
343 VMMR3DECL(void) STAMR3TermUVM(PUVM pUVM)
349 RTListForEachSafe(&pUVM->stam.s.List, pCur, pNext, STAMDESC, ListEntry)
358 stamR3LookupDestroyTree(pUVM->stam.s.pRoot);
359 pUVM->stam.s.pRoot = NULL;
362 Assert(pUVM->stam.s.RWSem != NIL_RTSEMRW);
363 RTSemRWDestroy(pUVM->stam.s.RWSem);
364 pUVM->stam.s.RWSem = NIL_RTSEMRW;
381 * @param pUVM Pointer to the user mode VM structure.
390 VMMR3DECL(int) STAMR3RegisterU(PUVM pUVM, void *pvSample, STAMTYPE enmType, STAMVISIBILITY enmVisibility, const char *pszName, STAMUNIT enmUnit, const char *pszDesc)
393 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
394 return stamR3RegisterU(pUVM, pvSample, NULL, NULL, enmType, enmVisibility, pszName, enmUnit, pszDesc);
423 return stamR3RegisterU(pVM->pUVM, pvSample, NULL, NULL, enmType, enmVisibility, pszName, enmUnit, pszDesc);
432 * @param pUVM Pointer to the user mode VM structure.
441 VMMR3DECL(int) STAMR3RegisterFU(PUVM pUVM, void *pvSample, STAMTYPE enmType, STAMVISIBILITY enmVisibility, STAMUNIT enmUnit,
446 int rc = STAMR3RegisterVU(pUVM, pvSample, enmType, enmVisibility, enmUnit, pszDesc, pszName, args);
471 int rc = STAMR3RegisterVU(pVM->pUVM, pvSample, enmType, enmVisibility, enmUnit, pszDesc, pszName, args);
491 VMMR3DECL(int) STAMR3RegisterVU(PUVM pUVM, void *pvSample, STAMTYPE enmType, STAMVISIBILITY enmVisibility, STAMUNIT enmUnit,
500 return STAMR3RegisterU(pUVM, pvSample, enmType, enmVisibility, szFormattedName, enmUnit, pszDesc);
521 return STAMR3RegisterVU(pVM->pUVM, pvSample, enmType, enmVisibility, enmUnit, pszDesc, pszName, args);
577 int rc = stamR3RegisterU(pVM->pUVM, pvSample, pfnReset, pfnPrint, STAMTYPE_CALLBACK, enmVisibility, pszFormattedName, enmUnit, pszDesc);
1243 * @param pUVM Pointer to the user mode VM structure.
1255 static int stamR3RegisterU(PUVM pUVM, void *pvSample, PFNSTAMR3CALLBACKRESET pfnReset, PFNSTAMR3CALLBACKPRINT pfnPrint,
1265 STAM_LOCK_WR(pUVM);
1271 PSTAMLOOKUP pLookup = pUVM->stam.s.pRoot; Assert(pLookup);
1281 STAM_UNLOCK_WR(pUVM);
1294 STAM_UNLOCK_WR(pUVM);
1307 STAM_UNLOCK_WR(pUVM);
1316 RTListForEach(&pUVM->stam.s.List, pCur, STAMDESC, ListEntry)
1325 STAM_UNLOCK_WR(pUVM);
1340 ? RTListGetPrev(&pUVM->stam.s.List, pCur, STAMDESC, ListEntry)
1341 : RTListGetLast(&pUVM->stam.s.List, STAMDESC, ListEntry);
1424 RTListAppend(&pUVM->stam.s.List, &pNew->ListEntry);
1432 stamR3ResetOne(pNew, pUVM->pVM);
1438 STAM_UNLOCK_WR(pUVM);
1447 * @param pUVM Pointer to the user mode VM structure.
1450 static int stamR3DestroyDesc(PUVM pUVM, PSTAMDESC pCur)
1472 * @param pUVM Pointer to the user mode VM structure.
1475 VMMR3DECL(int) STAMR3DeregisterByAddr(PUVM pUVM, void *pvSample)
1477 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
1480 VMSTATE enmState = VMR3GetStateU(pUVM);
1484 STAM_LOCK_WR(pUVM);
1491 RTListForEachSafe(&pUVM->stam.s.List, pCur, pNext, STAMDESC, ListEntry)
1494 rc = stamR3DestroyDesc(pUVM, pCur);
1497 STAM_UNLOCK_WR(pUVM);
1508 * @param pUVM Pointer to the user mode VM structure.
1511 static int stamR3DeregisterByPattern(PUVM pUVM, const char *pszPat)
1516 STAM_LOCK_WR(pUVM);
1519 PSTAMDESC pCur = stamR3LookupFindPatternDescRange(pUVM->stam.s.pRoot, &pUVM->stam.s.List, pszPat, &pLast);
1527 rc = stamR3DestroyDesc(pUVM, pCur);
1539 STAM_UNLOCK_WR(pUVM);
1549 * @param pUVM Pointer to the user mode VM structure.
1553 VMMR3DECL(int) STAMR3Deregister(PUVM pUVM, const char *pszPat)
1555 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
1558 VMSTATE enmState = VMR3GetStateU(pUVM);
1562 return stamR3DeregisterByPattern(pUVM, pszPat);
1571 * @param pUVM Pointer to the user mode VM structure.
1576 VMMR3DECL(int) STAMR3DeregisterF(PUVM pUVM, const char *pszPatFmt, ...)
1580 int rc = STAMR3DeregisterV(pUVM, pszPatFmt, va);
1591 * @param pUVM Pointer to the user mode VM structure.
1596 VMMR3DECL(int) STAMR3DeregisterV(PUVM pUVM, const char *pszPatFmt, va_list va)
1598 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
1601 VMSTATE enmState = VMR3GetStateU(pUVM);
1609 return stamR3DeregisterByPattern(pUVM, szPat);
1618 * @param pUVM The user mode VM handle.
1623 VMMR3DECL(int) STAMR3Reset(PUVM pUVM, const char *pszPat)
1625 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
1626 VM_ASSERT_VALID_EXT_RETURN(pUVM->pVM, VERR_INVALID_VM_HANDLE);
1674 STAM_LOCK_WR(pUVM);
1678 PVM pVM = pUVM->pVM;
1687 PVM pVM = pUVM->pVM;
1695 stamR3EnumU(pUVM, pszPat, false /* fUpdateRing0 */, stamR3ResetOne, pUVM->pVM);
1697 STAM_UNLOCK_WR(pUVM);
1787 * @param pUVM The user mode VM handle.
1797 VMMR3DECL(int) STAMR3Snapshot(PUVM pUVM, const char *pszPat, char **ppszSnapshot, size_t *pcchSnapshot, bool fWithDesc)
1799 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
1800 VM_ASSERT_VALID_EXT_RETURN(pUVM->pVM, VERR_INVALID_VM_HANDLE);
1802 STAMR3SNAPSHOTONE State = { NULL, NULL, NULL, pUVM->pVM, 0, VINF_SUCCESS, fWithDesc };
1814 int rc = stamR3EnumU(pUVM, pszPat, true /* fUpdateRing0 */, stamR3SnapshotOne, &State);
2075 * @param pUVM The user mode VM handle.
2079 VMMR3DECL(int) STAMR3SnapshotFree(PUVM pUVM, char *pszSnapshot)
2083 NOREF(pUVM);
2092 * @param pUVM Pointer to the user mode VM structure.
2096 VMMR3DECL(int) STAMR3Dump(PUVM pUVM, const char *pszPat)
2098 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
2099 VM_ASSERT_VALID_EXT_RETURN(pUVM->pVM, VERR_INVALID_VM_HANDLE);
2102 Args.pUVM = pUVM;
2106 stamR3EnumU(pUVM, pszPat, true /* fUpdateRing0 */, stamR3PrintOne, &Args);
2132 * @param pUVM Pointer to the user mode VM structure.
2136 VMMR3DECL(int) STAMR3DumpToReleaseLog(PUVM pUVM, const char *pszPat)
2138 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
2139 VM_ASSERT_VALID_EXT_RETURN(pUVM->pVM, VERR_INVALID_VM_HANDLE);
2142 Args.pUVM = pUVM;
2146 stamR3EnumU(pUVM, pszPat, true /* fUpdateRing0 */, stamR3PrintOne, &Args);
2171 * @param pUVM The user mode VM handle.
2175 VMMR3DECL(int) STAMR3Print(PUVM pUVM, const char *pszPat)
2177 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
2178 VM_ASSERT_VALID_EXT_RETURN(pUVM->pVM, VERR_INVALID_VM_HANDLE);
2181 Args.pUVM = pUVM;
2185 stamR3EnumU(pUVM, pszPat, true /* fUpdateRing0 */, stamR3PrintOne, &Args);
2252 pDesc->u.Callback.pfnPrint(pArgs->pUVM->pVM, pDesc->u.Callback.pvSample, szBuf, sizeof(szBuf));
2334 * @param pUVM The user mode VM handle.
2339 VMMR3DECL(int) STAMR3Enum(PUVM pUVM, const char *pszPat, PFNSTAMR3ENUM pfnEnum, void *pvUser)
2341 UVM_ASSERT_VALID_EXT_RETURN(pUVM, VERR_INVALID_VM_HANDLE);
2342 VM_ASSERT_VALID_EXT_RETURN(pUVM->pVM, VERR_INVALID_VM_HANDLE);
2345 Args.pVM = pUVM->pVM;
2349 return stamR3EnumU(pUVM, pszPat, true /* fUpdateRing0 */, stamR3EnumOne, &Args);
2478 * @param pUVM Pointer to the user mode VM structure.
2486 static int stamR3EnumU(PUVM pUVM, const char *pszPat, bool fUpdateRing0,
2498 stamR3Ring0StatsUpdateU(pUVM, "*");
2500 STAM_LOCK_RD(pUVM);
2501 RTListForEach(&pUVM->stam.s.List, pCur, STAMDESC, ListEntry)
2507 STAM_UNLOCK_RD(pUVM);
2516 stamR3Ring0StatsUpdateU(pUVM, pszPat);
2518 STAM_LOCK_RD(pUVM);
2522 pCur = stamR3LookupFindDesc(pUVM->stam.s.pRoot, pszPat);
2529 pCur = stamR3LookupFindPatternDescRange(pUVM->stam.s.pRoot, &pUVM->stam.s.List, pszPat, &pLast);
2551 RTListForEach(&pUVM->stam.s.List, pCur, STAMDESC, ListEntry)
2561 STAM_UNLOCK_RD(pUVM);
2582 stamR3Ring0StatsUpdateMultiU(pUVM, papszExpressions, cExpressions);
2584 STAM_LOCK_RD(pUVM);
2586 RTListForEach(&pUVM->stam.s.List, pCur, STAMDESC, ListEntry)
2595 STAM_UNLOCK_RD(pUVM);
2608 * @param pUVM Pointer to the user mode VM structure.
2610 static void stamR3Ring0StatsRegisterU(PUVM pUVM)
2614 stamR3RegisterU(pUVM, (uint8_t *)&pUVM->stam.s.GVMMStats + g_aGVMMStats[i].offVar, NULL, NULL,
2617 pUVM->stam.s.cRegisteredHostCpus = 0;
2621 stamR3RegisterU(pUVM, (uint8_t *)&pUVM->stam.s.GMMStats + g_aGMMStats[i].offVar, NULL, NULL,
2630 * @param pUVM Pointer to the user mode VM structure.
2633 static void stamR3Ring0StatsUpdateU(PUVM pUVM, const char *pszPat)
2635 stamR3Ring0StatsUpdateMultiU(pUVM, &pszPat, 1);
2645 * @param pUVM Pointer to the user mode VM structure.
2648 static void stamR3Ring0StatsUpdateMultiU(PUVM pUVM, const char * const *papszExpressions, unsigned cExpressions)
2650 PVM pVM = pUVM->pVM;
2677 pUVM->stam.s.GVMMStats = Req.Stats;
2683 if (RT_UNLIKELY(pUVM->stam.s.GVMMStats.cHostCpus > pUVM->stam.s.cRegisteredHostCpus))
2685 STAM_LOCK_WR(pUVM);
2686 if (RT_UNLIKELY(pUVM->stam.s.GVMMStats.cHostCpus > pUVM->stam.s.cRegisteredHostCpus))
2688 uint32_t cCpus = pUVM->stam.s.GVMMStats.cHostCpus;
2689 for (uint32_t iCpu = pUVM->stam.s.cRegisteredHostCpus; iCpu < cCpus; iCpu++)
2693 stamR3RegisterU(pUVM, &pUVM->stam.s.GVMMStats.aHostCpus[iCpu].idCpu, NULL, NULL,
2696 stamR3RegisterU(pUVM, &pUVM->stam.s.GVMMStats.aHostCpus[iCpu].idxCpuSet, NULL, NULL,
2699 stamR3RegisterU(pUVM, &pUVM->stam.s.GVMMStats.aHostCpus[iCpu].uDesiredHz, NULL, NULL,
2702 stamR3RegisterU(pUVM, &pUVM->stam.s.GVMMStats.aHostCpus[iCpu].uTimerHz, NULL, NULL,
2705 stamR3RegisterU(pUVM, &pUVM->stam.s.GVMMStats.aHostCpus[iCpu].cChanges, NULL, NULL,
2708 stamR3RegisterU(pUVM, &pUVM->stam.s.GVMMStats.aHostCpus[iCpu].cStarts, NULL, NULL,
2711 pUVM->stam.s.cRegisteredHostCpus = cCpus;
2713 STAM_UNLOCK_WR(pUVM);
2736 pUVM->stam.s.GMMStats = Req.Stats;
2781 static DECLCALLBACK(int) stamR3CmdStats(PCDBGCCMD pCmd, PDBGCCMDHLP pCmdHlp, PUVM pUVM, PCDBGCVAR paArgs, unsigned cArgs)
2786 DBGC_CMDHLP_REQ_UVM_RET(pCmdHlp, pCmd, pUVM);
2787 if (RTListIsEmpty(&pUVM->stam.s.List))
2794 Args.pUVM = pUVM;
2798 return stamR3EnumU(pUVM, cArgs ? paArgs[0].u.pszString : NULL, true /* fUpdateRing0 */, stamR3PrintOne, &Args);
2824 static DECLCALLBACK(int) stamR3CmdStatsReset(PCDBGCCMD pCmd, PDBGCCMDHLP pCmdHlp, PUVM pUVM, PCDBGCVAR paArgs, unsigned cArgs)
2829 DBGC_CMDHLP_REQ_UVM_RET(pCmdHlp, pCmd, pUVM);
2830 if (RTListIsEmpty(&pUVM->stam.s.List))
2836 int rc = STAMR3Reset(pUVM, cArgs ? paArgs[0].u.pszString : NULL);