Lines Matching defs:pIoLogger

182     PVDIOLOGGERINT pIoLogger = NULL;
184 pIoLogger = (PVDIOLOGGERINT)RTMemAllocZ(sizeof(VDIOLOGGERINT));
185 if (pIoLogger)
187 rc = RTSemFastMutexCreate(&pIoLogger->hMtx);
190 rc = RTMemCacheCreate(&pIoLogger->hMemCacheIoLogEntries, sizeof(VDIOLOGENTINT),
194 *ppIoLogger = pIoLogger;
198 RTMemFree(pIoLogger);
210 * @param pIoLogger The I/O logger to update.
212 static int vddbgIoLoggerHeaderUpdate(PVDIOLOGGERINT pIoLogger)
218 Hdr.fFlags = RT_H2LE_U32(pIoLogger->fFlags);
219 Hdr.u64Id = RT_H2LE_U64(pIoLogger->idNext);
220 rc = RTFileWriteAt(pIoLogger->hFile, 0, &Hdr, sizeof(Hdr), NULL);
229 * @param pIoLogger The I/O logger to use.
234 static int vddbgIoLogWriteSgBuf(PVDIOLOGGERINT pIoLogger, uint64_t off, PCRTSGBUF pSgBuf, size_t cbSgBuf)
249 rc = RTFileWriteAt(pIoLogger->hFile, off, pvSeg, cbSeg, NULL);
263 PVDIOLOGGERINT pIoLogger = NULL;
269 rc = vddbgIoLoggerCreate(&pIoLogger);
272 pIoLogger->fFlags = fFlags;
273 pIoLogger->hFile = NIL_RTFILE;
276 rc = RTFileOpen(&pIoLogger->hFile, pszFilename, RTFILE_O_DENY_NONE | RTFILE_O_CREATE | RTFILE_O_WRITE | RTFILE_O_READ);
279 rc = vddbgIoLoggerHeaderUpdate(pIoLogger);
282 pIoLogger->offWriteNext = sizeof(IoLogHeader);
283 pIoLogger->offReadNext = sizeof(IoLogHeader);
288 *phIoLogger = pIoLogger;
291 if (pIoLogger->hFile != NIL_RTFILE)
292 RTFileClose(pIoLogger->hFile);
293 RTMemFree(pIoLogger);
303 PVDIOLOGGERINT pIoLogger = NULL;
308 rc = vddbgIoLoggerCreate(&pIoLogger);
312 rc = RTFileOpen(&pIoLogger->hFile, pszFilename, RTFILE_O_DENY_NONE | RTFILE_O_OPEN | RTFILE_O_WRITE | RTFILE_O_READ);
318 rc = RTFileGetSize(pIoLogger->hFile, &cbLog);
322 rc = RTFileRead(pIoLogger->hFile, &Hdr, sizeof(Hdr), NULL);
327 pIoLogger->fFlags = RT_LE2H_U32(Hdr.fFlags);
328 pIoLogger->offWriteNext = cbLog;
329 pIoLogger->offReadNext = sizeof(Hdr);
330 pIoLogger->idNext = RT_LE2H_U64(Hdr.u64Id);
331 *phIoLogger = pIoLogger;
343 PVDIOLOGGERINT pIoLogger = hIoLogger;
345 AssertPtrReturnVoid(pIoLogger);
347 vddbgIoLoggerHeaderUpdate(pIoLogger);
348 RTFileFlush(pIoLogger->hFile);
349 RTFileClose(pIoLogger->hFile);
350 RTMemCacheDestroy(pIoLogger->hMemCacheIoLogEntries);
351 RTSemFastMutexDestroy(pIoLogger->hMtx);
352 RTMemFree(pIoLogger);
358 PVDIOLOGGERINT pIoLogger = hIoLogger;
360 AssertPtrReturn(pIoLogger, VERR_INVALID_HANDLE);
362 rc = vddbgIoLoggerHeaderUpdate(pIoLogger);
364 rc = RTFileFlush(pIoLogger->hFile);
371 PVDIOLOGGERINT pIoLogger = hIoLogger;
373 AssertPtrReturn(pIoLogger, 0);
375 return pIoLogger->fFlags;
382 PVDIOLOGGERINT pIoLogger = hIoLogger;
385 AssertPtrReturn(pIoLogger, VERR_INVALID_HANDLE);
389 rc = RTSemFastMutexRequest(pIoLogger->hMtx);
392 pIoLogEntry = (PVDIOLOGENTINT)RTMemCacheAlloc(pIoLogger->hMemCacheIoLogEntries);
397 pIoLogEntry->idStart = pIoLogger->idNext++;
407 rc = RTFileWriteAt(pIoLogger->hFile, pIoLogger->offWriteNext, &Entry, sizeof(Entry), NULL);
410 pIoLogger->offWriteNext += sizeof(Entry);
413 && (pIoLogger->fFlags & VDDBG_IOLOG_LOG_DATA_WRITTEN))
416 rc = vddbgIoLogWriteSgBuf(pIoLogger, pIoLogger->offWriteNext, pSgBuf, cbIo);
419 pIoLogger->offWriteNext -= sizeof(Entry);
420 rc = RTFileSetSize(pIoLogger->hFile, pIoLogger->offWriteNext);
423 pIoLogger->offWriteNext += cbIo;
432 && (pIoLogger->fFlags & VDDBG_IOLOG_LOG_DATA_READ))
441 pIoLogger->idNext--;
442 RTMemCacheFree(pIoLogger->hMemCacheIoLogEntries, pIoLogEntry);
448 RTSemFastMutexRelease(pIoLogger->hMtx);
456 PVDIOLOGGERINT pIoLogger = hIoLogger;
459 AssertPtrReturn(pIoLogger, VERR_INVALID_HANDLE);
462 rc = RTSemFastMutexRequest(pIoLogger->hMtx);
465 pIoLogEntry = (PVDIOLOGENTINT)RTMemCacheAlloc(pIoLogger->hMemCacheIoLogEntries);
470 pIoLogEntry->idStart = pIoLogger->idNext++;
479 rc = RTFileWriteAt(pIoLogger->hFile, pIoLogger->offWriteNext, &Entry, sizeof(Entry), NULL);
482 pIoLogger->offWriteNext += sizeof(Entry);
490 rc = RTFileWriteAt(pIoLogger->hFile, pIoLogger->offWriteNext + i*sizeof(DiscardRange),
498 pIoLogger->offWriteNext -= sizeof(Entry);
499 rc = RTFileSetSize(pIoLogger->hFile, pIoLogger->offWriteNext);
502 pIoLogger->offWriteNext += cRanges * sizeof(DiscardRange);
514 pIoLogger->idNext--;
515 RTMemCacheFree(pIoLogger->hMemCacheIoLogEntries, pIoLogEntry);
521 RTSemFastMutexRelease(pIoLogger->hMtx);
528 PVDIOLOGGERINT pIoLogger = hIoLogger;
531 AssertPtrReturn(pIoLogger, VERR_INVALID_HANDLE);
534 rc = RTSemFastMutexRequest(pIoLogger->hMtx);
546 rc = RTFileWriteAt(pIoLogger->hFile, pIoLogger->offWriteNext, &Entry, sizeof(Entry), NULL);
549 pIoLogger->offWriteNext += sizeof(Entry);
553 rc = vddbgIoLogWriteSgBuf(pIoLogger, pIoLogger->offWriteNext, pSgBuf, pIoLogEntry->cbIo);
555 pIoLogger->offWriteNext += pIoLogEntry->cbIo;
558 pIoLogger->offWriteNext -= sizeof(Entry);
559 rc = RTFileSetSize(pIoLogger->hFile, pIoLogger->offWriteNext);
564 RTMemCacheFree(pIoLogger->hMemCacheIoLogEntries, pIoLogEntry);
565 RTSemFastMutexRelease(pIoLogger->hMtx);
572 PVDIOLOGGERINT pIoLogger = hIoLogger;
574 AssertPtrReturn(pIoLogger, VERR_INVALID_HANDLE);
577 rc = RTSemFastMutexRequest(pIoLogger->hMtx);
580 if (pIoLogger->offReadNext == pIoLogger->offWriteNext)
583 RTSemFastMutexRelease(pIoLogger->hMtx);
587 if (!pIoLogger->u32EventTypeNext)
590 rc = RTFileReadAt(pIoLogger->hFile, pIoLogger->offReadNext, &abBuf, sizeof(abBuf), NULL);
593 pIoLogger->u32EventTypeNext = abBuf[0];
594 pIoLogger->enmReqTypeNext = (VDDBGIOLOGREQ)abBuf[1];
600 Assert(pIoLogger->u32EventTypeNext != VDIOLOGEVENT_INVALID);
602 switch (pIoLogger->u32EventTypeNext)
611 AssertMsgFailed(("Invalid event type %d\n", pIoLogger->u32EventTypeNext));
615 RTSemFastMutexRelease(pIoLogger->hMtx);
622 PVDIOLOGGERINT pIoLogger = hIoLogger;
624 AssertPtrReturn(pIoLogger, VERR_INVALID_HANDLE);
627 rc = RTSemFastMutexRequest(pIoLogger->hMtx);
630 if (pIoLogger->offReadNext == pIoLogger->offWriteNext)
633 RTSemFastMutexRelease(pIoLogger->hMtx);
639 Assert(pIoLogger->enmReqTypeNext != VDDBGIOLOGREQ_INVALID);
640 *penmReq = pIoLogger->enmReqTypeNext;
643 RTSemFastMutexRelease(pIoLogger->hMtx);
651 PVDIOLOGGERINT pIoLogger = hIoLogger;
653 AssertPtrReturn(pIoLogger, VERR_INVALID_HANDLE);
659 rc = RTSemFastMutexRequest(pIoLogger->hMtx);
662 if (pIoLogger->u32EventTypeNext == VDIOLOG_EVENT_START)
665 rc = RTFileReadAt(pIoLogger->hFile, pIoLogger->offReadNext, &Entry, sizeof(Entry), NULL);
673 if ( pIoLogger->enmReqTypeNext == VDDBGIOLOGREQ_WRITE
674 && (pIoLogger->fFlags & VDDBG_IOLOG_LOG_DATA_WRITTEN))
680 rc = RTFileReadAt(pIoLogger->hFile, pIoLogger->offReadNext + sizeof(Entry), pvBuf, *pcbIo, NULL);
683 pIoLogger->offReadNext += *pcbIo + sizeof(Entry);
686 pIoLogger->offReadNext += sizeof(Entry);
693 pIoLogger->u32EventTypeNext = 0;
695 RTSemFastMutexRelease(pIoLogger->hMtx);
703 PVDIOLOGGERINT pIoLogger = hIoLogger;
705 AssertPtrReturn(pIoLogger, VERR_INVALID_HANDLE);
709 rc = RTSemFastMutexRequest(pIoLogger->hMtx);
712 if ( pIoLogger->u32EventTypeNext == VDIOLOG_EVENT_START
713 && pIoLogger->enmReqTypeNext == VDDBGIOLOGREQ_DISCARD)
716 rc = RTFileReadAt(pIoLogger->hFile, pIoLogger->offReadNext, &Entry, sizeof(Entry), NULL);
722 pIoLogger->offReadNext += sizeof(Entry);
732 rc = RTFileReadAt(pIoLogger->hFile, pIoLogger->offReadNext + i*sizeof(DiscardRange),
743 pIoLogger->offReadNext += *pcRanges * sizeof(DiscardRange);
747 pIoLogger->offReadNext -= sizeof(Entry);
757 pIoLogger->u32EventTypeNext = 0;
759 RTSemFastMutexRelease(pIoLogger->hMtx);
768 PVDIOLOGGERINT pIoLogger = hIoLogger;
770 AssertPtrReturn(pIoLogger, VERR_INVALID_HANDLE);
775 rc = RTSemFastMutexRequest(pIoLogger->hMtx);
778 if (pIoLogger->u32EventTypeNext == VDIOLOG_EVENT_COMPLETE)
781 rc = RTFileReadAt(pIoLogger->hFile, pIoLogger->offReadNext, &Entry, sizeof(Entry), NULL);
795 rc = RTFileReadAt(pIoLogger->hFile, pIoLogger->offReadNext + sizeof(Entry), pvBuf, *pcbIo, NULL);
798 pIoLogger->offReadNext += *pcbIo + sizeof(Entry);
801 pIoLogger->offReadNext += sizeof(Entry);
808 pIoLogger->u32EventTypeNext = 0;
810 RTSemFastMutexRelease(pIoLogger->hMtx);