Lines Matching refs:pArgs

236     PRTMPARGS pArgs = (PRTMPARGS)uUserCtx;
237 /*ASMAtomicIncU32(&pArgs->cHits); - not needed */
238 pArgs->pfnWorker(KeGetCurrentProcessorNumber(), pArgs->pvUser1, pArgs->pvUser2);
251 PRTMPARGS pArgs = (PRTMPARGS)uUserCtx;
253 if (pArgs->idCpu != idCpu)
255 /*ASMAtomicIncU32(&pArgs->cHits); - not needed */
256 pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2);
270 PRTMPARGS pArgs = (PRTMPARGS)uUserCtx;
272 if ( pArgs->idCpu == idCpu
273 || pArgs->idCpu2 == idCpu)
275 ASMAtomicIncU32(&pArgs->cHits);
276 pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2);
290 PRTMPARGS pArgs = (PRTMPARGS)uUserCtx;
292 if (pArgs->idCpu == idCpu)
294 ASMAtomicIncU32(&pArgs->cHits);
295 pArgs->pfnWorker(idCpu, pArgs->pvUser1, pArgs->pvUser2);
345 PRTMPARGS pArgs = (PRTMPARGS)DeferredContext;
347 ASMAtomicIncU32(&pArgs->cHits);
348 pArgs->pfnWorker(KeGetCurrentProcessorNumber(), pArgs->pvUser1, pArgs->pvUser2);
351 int32_t cRefs = ASMAtomicDecS32(&pArgs->cRefs);
354 ExFreePool(pArgs);
374 PRTMPARGS pArgs;
396 pArgs = (PRTMPARGS)ExAllocatePoolWithTag(NonPagedPool, MAXIMUM_PROCESSORS*sizeof(KDPC) + sizeof(RTMPARGS), (ULONG)'RTMp');
397 if (!pArgs)
400 pArgs->pfnWorker = pfnWorker;
401 pArgs->pvUser1 = pvUser1;
402 pArgs->pvUser2 = pvUser2;
403 pArgs->idCpu = NIL_RTCPUID;
404 pArgs->idCpu2 = NIL_RTCPUID;
405 pArgs->cHits = 0;
406 pArgs->cRefs = 1;
408 paExecCpuDpcs = (KDPC *)(pArgs + 1);
412 KeInitializeDpc(&paExecCpuDpcs[0], rtmpNtDPCWrapper, pArgs);
415 pArgs->idCpu = idCpu;
419 KeInitializeDpc(&paExecCpuDpcs[0], rtmpNtDPCWrapper, pArgs);
422 pArgs->idCpu = idCpu;
424 KeInitializeDpc(&paExecCpuDpcs[1], rtmpNtDPCWrapper, pArgs);
427 pArgs->idCpu2 = idCpu2;
433 KeInitializeDpc(&paExecCpuDpcs[i], rtmpNtDPCWrapper, pArgs);
453 ASMAtomicIncS32(&pArgs->cRefs);
459 ASMAtomicIncS32(&pArgs->cRefs);
463 ASMAtomicIncS32(&pArgs->cRefs);
476 ASMAtomicIncS32(&pArgs->cRefs);
491 * executed. Seen pArgs being freed while some CPU was using it before
496 *pcHits = pArgs->cHits;
499 int32_t cRefs = ASMAtomicDecS32(&pArgs->cRefs);
502 ExFreePool(pArgs);
585 DECLINLINE(void) rtMpNtOnSpecificRelease(PRTMPNTONSPECIFICARGS pArgs)
587 uint32_t cRefs = ASMAtomicDecU32(&pArgs->cRefs);
590 ExFreePool(pArgs);
605 PRTMPNTONSPECIFICARGS pArgs = (PRTMPNTONSPECIFICARGS)DeferredContext;
606 ASMAtomicWriteBool(&pArgs->fExecuting, true);
608 pArgs->CallbackArgs.pfnWorker(KeGetCurrentProcessorNumber(), pArgs->CallbackArgs.pvUser1, pArgs->CallbackArgs.pvUser2);
610 ASMAtomicWriteBool(&pArgs->fDone, true);
611 KeSetEvent(&pArgs->DoneEvt, 1 /*PriorityIncrement*/, FALSE /*Wait*/);
613 rtMpNtOnSpecificRelease(pArgs);
665 PRTMPNTONSPECIFICARGS pArgs = (PRTMPNTONSPECIFICARGS)ExAllocatePoolWithTag(NonPagedPool, sizeof(*pArgs), (ULONG)'RTMp');
666 if (!pArgs)
668 pArgs->cRefs = 2;
669 pArgs->fExecuting = false;
670 pArgs->fDone = false;
671 pArgs->CallbackArgs.pfnWorker = pfnWorker;
672 pArgs->CallbackArgs.pvUser1 = pvUser1;
673 pArgs->CallbackArgs.pvUser2 = pvUser2;
674 pArgs->CallbackArgs.idCpu = idCpu;
675 pArgs->CallbackArgs.cHits = 0;
676 pArgs->CallbackArgs.cRefs = 2;
677 KeInitializeEvent(&pArgs->DoneEvt, SynchronizationEvent, FALSE /* not signalled */);
678 KeInitializeDpc(&pArgs->Dpc, rtMpNtOnSpecificDpcWrapper, pArgs);
679 KeSetImportanceDpc(&pArgs->Dpc, HighImportance);
680 KeSetTargetProcessorDpc(&pArgs->Dpc, (int)idCpu);
695 ExFreePool(pArgs);
702 BOOLEAN fRc = KeInsertQueueDpc(&pArgs->Dpc, 0, 0);
714 if (pArgs->fDone)
716 rtMpNtOnSpecificRelease(pArgs);
727 NTSTATUS rcNt = KeWaitForSingleObject(&pArgs->DoneEvt, Executive, KernelMode, FALSE /* Alertable */, &Timeout);
730 rtMpNtOnSpecificRelease(pArgs);
738 if ( !pArgs->fExecuting
746 rcNt = KeWaitForSingleObject(&pArgs->DoneEvt, Executive, KernelMode, FALSE /* Alertable */, &Timeout);
749 rtMpNtOnSpecificRelease(pArgs);
757 if (KeRemoveQueueDpc(&pArgs->Dpc))
759 ExFreePool(pArgs); /* DPC was still queued, so we can return without further ado. */
768 rcNt = KeWaitForSingleObject(&pArgs->DoneEvt, Executive, KernelMode, FALSE /* Alertable */, &Timeout);
781 rtMpNtOnSpecificRelease(pArgs);