Lines Matching refs:pVCpu

42  * @param   pVCpu           Pointer to the VMCPU of the calling EMT.
46 VMMRZDECL(int) VMMRZCallRing3(PVM pVM, PVMCPU pVCpu, VMMCALLRING3 enmOperation, uint64_t uArg)
48 VMCPU_ASSERT_EMT(pVCpu);
53 if (RT_UNLIKELY( pVCpu->vmm.s.cCallRing3Disabled != 0
72 "VMMRZCallRing3: enmOperation=%d uArg=%#llx idCpu=%#x\n", enmOperation, uArg, pVCpu->idCpu);
75 "VMMRZCallRing3: enmOperation=%d uArg=%#llx idCpu=%#x\n", enmOperation, uArg, pVCpu->idCpu);
83 pVCpu->vmm.s.enmCallRing3Operation = enmOperation;
84 pVCpu->vmm.s.u64CallRing3Arg = uArg;
85 pVCpu->vmm.s.rcCallRing3 = VERR_VMM_RING3_CALL_NO_RC;
90 if (pVCpu->vmm.s.pfnCallRing3CallbackR0)
92 rc = pVCpu->vmm.s.pfnCallRing3CallbackR0(pVCpu, enmOperation, pVCpu->vmm.s.pvCallRing3CallbackUserR0);
96 rc = vmmR0CallRing3LongJmp(&pVCpu->vmm.s.CallRing3JmpBufR0, VINF_VMM_CALL_HOST);
100 return pVCpu->vmm.s.rcCallRing3;
105 * Simple wrapper that adds the pVCpu argument.
125 * @param pVCpu The CPU struct for the calling EMT.
128 VMMRZDECL(void) VMMRZCallRing3Disable(PVMCPU pVCpu)
130 VMCPU_ASSERT_EMT(pVCpu);
135 Assert(pVCpu->vmm.s.cCallRing3Disabled < 16);
136 if (ASMAtomicUoIncU32(&pVCpu->vmm.s.cCallRing3Disabled) == 1)
141 pVCpu->pVMRC->vmm.s.fRCLoggerFlushingDisabled = true;
144 if (pVCpu->vmm.s.pR0LoggerR0)
145 pVCpu->vmm.s.pR0LoggerR0->fFlushingDisabled = true;
159 * @param pVCpu The CPU struct for the calling EMT.
162 VMMRZDECL(void) VMMRZCallRing3Enable(PVMCPU pVCpu)
164 VMCPU_ASSERT_EMT(pVCpu);
169 Assert(pVCpu->vmm.s.cCallRing3Disabled > 0);
170 if (ASMAtomicUoDecU32(&pVCpu->vmm.s.cCallRing3Disabled) == 0)
173 pVCpu->pVMRC->vmm.s.fRCLoggerFlushingDisabled = false;
176 if (pVCpu->vmm.s.pR0LoggerR0)
177 pVCpu->vmm.s.pR0LoggerR0->fFlushingDisabled = false;
192 * @param pVCpu The CPU struct for the calling EMT.
194 VMMRZDECL(bool) VMMRZCallRing3IsEnabled(PVMCPU pVCpu)
196 VMCPU_ASSERT_EMT(pVCpu);
197 Assert(pVCpu->vmm.s.cCallRing3Disabled <= 16);
198 return pVCpu->vmm.s.cCallRing3Disabled == 0;
205 * @param pVCpu Pointer to the VMCPU.
211 VMMRZDECL(int) VMMRZCallRing3SetNotification(PVMCPU pVCpu, R0PTRTYPE(PFNVMMR0CALLRING3NOTIFICATION) pfnCallback, RTR0PTR pvUser)
213 AssertPtrReturn(pVCpu, VERR_INVALID_POINTER);
216 if (pVCpu->vmm.s.pfnCallRing3CallbackR0)
219 pVCpu->vmm.s.pfnCallRing3CallbackR0 = pfnCallback;
220 pVCpu->vmm.s.pvCallRing3CallbackUserR0 = pvUser;
228 * @param pVCpu Pointer to the VMCPU.
230 VMMRZDECL(void) VMMRZCallRing3RemoveNotification(PVMCPU pVCpu)
232 pVCpu->vmm.s.pfnCallRing3CallbackR0 = NULL;
239 * @param pVCpu Pointer to the VMCPU.
242 VMMRZDECL(bool) VMMRZCallRing3IsNotificationSet(PVMCPU pVCpu)
244 return pVCpu->vmm.s.pfnCallRing3CallbackR0 != NULL;