VBoxDbgBase::atStateChange(PUVM pUVM, VMSTATE enmState, VMSTATE /*enmOldState*/, void *pvUser) { VBoxDbgBase *pThis = (VBoxDbgBase *)pvUser; NOREF(pUVM); switch (enmState) { case VMSTATE_TERMINATED: { /** @todo need to do some locking here? */ PUVM pUVM2 = ASMAtomicXchgPtrT(&pThis->m_pUVM, NULL, PUVM); if (pUVM2) { Assert(pUVM2 == pUVM); pThis->sigTerminated(); VMR3ReleaseUVM(pUVM2); } break; } case VMSTATE_DESTROYING: pThis->sigDestroying(); break; default: break; } }
VBoxDbgBase::atStateChange(PVM pVM, VMSTATE enmState, VMSTATE /*enmOldState*/, void *pvUser) { VBoxDbgBase *pThis = (VBoxDbgBase *)pvUser; switch (enmState) { case VMSTATE_TERMINATED: /** @todo need to do some locking here? */ if (ASMAtomicCmpXchgPtr(&pThis->m_pVM, NULL, pVM)) pThis->sigTerminated(); break; case VMSTATE_DESTROYING: pThis->sigDestroying(); break; default: break; } }