Lines Matching refs:pUmod

76     PSUPDRVTRACERUMOD       pUmod;
748 pProv->pUmod = NULL;
874 * @param pUmod The associated user tracepoint module if
879 PSUPDRVSESSION pSession, PSUPDRVTRACERUMOD pUmod, const char *pszModName)
901 rc = supdrvVtgValidate(pVtgHdr, (uintptr_t)pVtgHdr, NULL, 0, pUmod != NULL);
953 size_t const cchName = strlen(pszName) + (pUmod ? 16 : 0);
963 if (!pUmod)
975 pProv->Core.pvProbeLocsEn = pUmod->pvProbeLocs;
976 pProv->Core.pacProbeEnabled = pUmod->pacProbeEnabled;
977 pProv->Core.paR0ProbeLocs = &pUmod->aProbeLocs[0];
978 pProv->Core.paR0Probes = (PSUPDRVPROBEINFO)&pUmod->aProbeLocs[pUmod->cProbeLocs];
979 pProv->Core.cbProbeLocsEn = pUmod->cbProbeLoc;
980 pProv->Core.cBits = pUmod->cBits;
985 pProv->pUmod = pUmod;
989 if (!pUmod)
1090 rc = supdrvTracerRegisterVtgObj(pSession->pDevExt, pVtgHdr, NULL /*pImage*/, pSession, NULL /*pUmod*/, pszName);
1168 rc = supdrvTracerRegisterVtgObj(pDevExt, pVtgHdr, pImage, NULL /*pSession*/, NULL /*pUmod*/, pImage->szName);
1592 PSUPDRVTRACERUMOD pUmod;
1593 RTListForEachSafe(&pSession->TpUmods, pUmod, pUmodNext, SUPDRVTRACERUMOD, ListEntry)
1595 RTR0MemObjFree(pUmod->hMemObjMap, false /*fFreeMappings*/);
1596 RTR0MemObjFree(pUmod->hMemObjLock, false /*fFreeMappings*/);
1597 supdrvVtgReleaseObjectCopy(pDevExt, pUmod->pVtgCopy);
1598 RTMemFree(pUmod);
1712 * @param pUmod The structure we've allocated to track the
1719 RTR3PTR R3PtrStrTab, uint32_t cbStrTab, uint32_t fFlags, PSUPDRVTRACERUMOD pUmod)
1772 PCVTGPROBELOC32 paSrc = (PCVTGPROBELOC32)pUmod->pvProbeLocs;
1791 PCVTGPROBELOC64 paSrc = (PCVTGPROBELOC64)pUmod->pvProbeLocs;
1827 pUmod->pVtgCopy = supdrvVtgFindObjectCopyLocked(pHashList, pVtgHdr, cbStrTab, fFlags);
1828 if (!pUmod->pVtgCopy)
1830 pUmod->pVtgCopy = pThis;
1855 * @param pUmod The user tracepoint module.
1857 static void supdrvTracerUmodClearProbeIds(PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession, PSUPDRVTRACERUMOD pUmod)
1861 AssertReturnVoid(pUmod->iLookupTable < RT_ELEMENTS(pSession->apTpLookupTable));
1862 AssertReturnVoid(pSession->apTpLookupTable[pUmod->iLookupTable] == pUmod);
1867 i = pUmod->cProbeLocs;
1868 if (pUmod->cBits == 32)
1870 PVTGPROBELOC32 paProbeLocs = (PVTGPROBELOC32)pUmod->pvProbeLocs;
1876 PVTGPROBELOC64 paProbeLocs = (PVTGPROBELOC64)pUmod->pvProbeLocs;
1883 * idle to make sure there are no current users of pUmod.
1886 if (pSession->apTpLookupTable[pUmod->iLookupTable] == pUmod)
1901 ASMAtomicWriteNullPtr(&pSession->apTpLookupTable[pUmod->iLookupTable]);
1914 * @param pUmod The user tracepoint module.
1916 static int supdrvTracerUmodSetProbeIds(PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession, PSUPDRVTRACERUMOD pUmod)
1929 pSession->apTpLookupTable[i] = pUmod;
1930 pUmod->iLookupTable = i;
1942 iBase = (uint32_t)pUmod->iLookupTable << 24;
1943 i = pUmod->cProbeLocs;
1944 if (pUmod->cBits == 32)
1946 PVTGPROBELOC32 paProbeLocs = (PVTGPROBELOC32)pUmod->pvProbeLocs;
1952 PVTGPROBELOC64 paProbeLocs = (PVTGPROBELOC64)pUmod->pvProbeLocs;
1967 PSUPDRVTRACERUMOD pUmod;
2021 pUmod = (PSUPDRVTRACERUMOD)RTMemAllocZ( RT_OFFSETOF(SUPDRVTRACERUMOD, aProbeLocs[cProbeLocs])
2023 if (!pUmod)
2025 pUmod->u32Magic = SUPDRVTRACERUMOD_MAGIC;
2026 RTListInit(&pUmod->ListEntry);
2027 pUmod->R3PtrVtgHdr = R3PtrVtgHdr;
2028 pUmod->pVtgCopy = NULL;
2029 pUmod->hMemObjLock = NIL_RTR0MEMOBJ;
2030 pUmod->hMemObjMap = NIL_RTR0MEMOBJ;
2031 pUmod->R3PtrProbeLocs = (RTR3INTPTR)R3PtrVtgHdr + Hdr.offProbeLocs;
2032 pUmod->iLookupTable = UINT8_MAX;
2033 pUmod->cBits = Hdr.cBits;
2034 pUmod->cbProbeLoc = Hdr.cBits == 32 ? sizeof(VTGPROBELOC32) : sizeof(VTGPROBELOC64);
2035 pUmod->cProbeLocs = cProbeLocs;
2040 rc = RTR0MemObjLockUser(&pUmod->hMemObjLock, R3PtrLock, cbLock, RTMEM_PROT_READ | RTMEM_PROT_WRITE, NIL_RTR0PROCESS);
2043 rc = RTR0MemObjMapKernel(&pUmod->hMemObjMap, pUmod->hMemObjLock, (void *)-1, 0, RTMEM_PROT_READ | RTMEM_PROT_WRITE);
2046 pUmod->pacProbeEnabled = (uint32_t *)( (uintptr_t)RTR0MemObjAddress(pUmod->hMemObjMap)
2048 pUmod->pvProbeLocs = (uint8_t *)pUmod->pacProbeEnabled + Hdr.offProbeLocs - Hdr.offProbeEnabled;
2054 pUmod->pVtgCopy = supdrvVtgFindObjectCopy(pDevExt, &Hdr, cbStrTab, fFlags);
2055 if (!pUmod->pVtgCopy)
2056 rc = supdrvVtgCreateObjectCopy(pDevExt, &Hdr, R3PtrVtgHdr, uVtgHdrAddr, R3PtrStrTab, cbStrTab, fFlags, pUmod);
2059 AssertPtr(pUmod->pVtgCopy);
2065 rc = supdrvTracerUmodSetProbeIds(pDevExt, pSession, pUmod);
2071 rc = supdrvTracerRegisterVtgObj(pDevExt, &pUmod->pVtgCopy->Hdr,
2072 NULL /*pImage*/, pSession, pUmod, pszModName);
2076 RTListAppend(&pSession->TpUmods, &pUmod->ListEntry);
2083 supdrvTracerUmodClearProbeIds(pDevExt, pSession, pUmod);
2085 supdrvVtgReleaseObjectCopy(pDevExt, pUmod->pVtgCopy);
2087 RTR0MemObjFree(pUmod->hMemObjMap, false /*fFreeMappings*/);
2089 RTR0MemObjFree(pUmod->hMemObjLock, false /*fFreeMappings*/);
2091 pUmod->u32Magic = ~SUPDRVTRACERUMOD_MAGIC;
2092 RTMemFree(pUmod);
2099 PSUPDRVTRACERUMOD pUmod = NULL;
2109 pUmod = pSession->apTpLookupTable[i];
2110 if ( pUmod
2111 && pUmod->u32Magic == SUPDRVTRACERUMOD_MAGIC
2112 && pUmod->R3PtrVtgHdr == R3PtrVtgHdr)
2116 if (pUmod)
2126 supdrvTracerUmodClearProbeIds(pDevExt, pSession, pUmod);
2134 if (pProv->pUmod == pUmod)
2142 pUmod->u32Magic = ~SUPDRVTRACERUMOD_MAGIC;
2143 supdrvVtgReleaseObjectCopy(pDevExt, pUmod->pVtgCopy);
2144 RTR0MemObjFree(pUmod->hMemObjMap, false /*fFreeMappings*/);
2145 RTR0MemObjFree(pUmod->hMemObjLock, false /*fFreeMappings*/);
2146 RTMemFree(pUmod);
2169 PSUPDRVTRACERUMOD pUmod;
2184 pUmod = pSession->apTpLookupTable[iLookupTable];
2185 if (RT_LIKELY(pUmod))
2187 if (RT_LIKELY( pUmod->u32Magic == SUPDRVTRACERUMOD_MAGIC
2188 && iProbeLoc < pUmod->cProbeLocs
2189 && pCtx->cBits == pUmod->cBits))
2192 RTR3PTR R3PtrProbeLoc = pUmod->R3PtrProbeLocs + iProbeLoc * pUmod->cbProbeLoc;
2197 if (RT_LIKELY(pUmod->aProbeLocs[iProbeLoc].fEnabled))
2201 pVtgCopy = pUmod->pVtgCopy;
2209 pCtx->idProbe = pUmod->aProbeLocs[iProbeLoc].idProbe;
2442 rc = supdrvTracerRegisterVtgObj(pDevExt, &g_VTGObjHeader, NULL /*pImage*/, NULL /*pSession*/, NULL /*pUmod*/, "vboxdrv");