VirtualBox

Changeset 47456 in vbox for trunk/src


Ignore:
Timestamp:
Jul 29, 2013 12:51:12 PM (11 years ago)
Author:
vboxsync
Message:

VMM/VMMR0,GVMMR0: Thread-context hooks creation/release. The registeration/de-registeration and HM hook implementation is still todo.

Location:
trunk/src/VBox/VMM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp

    r46326 r47456  
    868868                                    }
    869869
    870                                     rc = RTR0MemObjMapUser(&pGVM->gvmm.s.VMPagesMapObj, pGVM->gvmm.s.VMPagesMemObj, (RTR3PTR)-1, 0,
    871                                                            RTMEM_PROT_READ | RTMEM_PROT_WRITE, NIL_RTR0PROCESS);
     870                                    rc = RTR0MemObjMapUser(&pGVM->gvmm.s.VMPagesMapObj, pGVM->gvmm.s.VMPagesMemObj, (RTR3PTR)-1,
     871                                                           0 /* uAlignment */, RTMEM_PROT_READ | RTMEM_PROT_WRITE,
     872                                                           NIL_RTR0PROCESS);
    872873                                    if (RT_SUCCESS(rc))
    873874                                    {
     
    888889                                        pGVMM->cEMTs += cCpus;
    889890
    890                                         VBOXVMM_R0_GVMM_VM_CREATED(pGVM, pVM, ProcId, (void *)hEMT0, cCpus);
    891 
    892                                         gvmmR0UsedUnlock(pGVMM);
    893                                         gvmmR0CreateDestroyUnlock(pGVMM);
    894 
    895                                         *ppVM = pVM;
    896                                         Log(("GVMMR0CreateVM: pVM=%p pVMR3=%p pGVM=%p hGVM=%d\n", pVM, pVM->pVMR3, pGVM, iHandle));
    897                                         return VINF_SUCCESS;
     891                                        rc = VMMR0ThreadCtxHooksCreate(&pVM->aCpus[0]);
     892                                        if (RT_SUCCESS(rc))
     893                                        {
     894                                            VBOXVMM_R0_GVMM_VM_CREATED(pGVM, pVM, ProcId, (void *)hEMT0, cCpus);
     895
     896                                            gvmmR0UsedUnlock(pGVMM);
     897                                            gvmmR0CreateDestroyUnlock(pGVMM);
     898
     899                                            *ppVM = pVM;
     900                                            Log(("GVMMR0CreateVM: pVM=%p pVMR3=%p pGVM=%p hGVM=%d\n", pVM, pVM->pVMR3, pGVM, iHandle));
     901                                            return VINF_SUCCESS;
     902                                        }
    898903                                    }
    899904
     
    10981103    AssertRC(rc);
    10991104
    1100     /* be careful here because we might theoretically be racing someone else cleaning up. */
     1105    /* Be careful here because we might theoretically be racing someone else cleaning up. */
    11011106    if (    pHandle->pVM == pVM
    11021107        &&  (   (   pHandle->hEMT0  == hSelf
     
    11111116        pHandle->pvObj = NULL;
    11121117        gvmmR0CreateDestroyUnlock(pGVMM);
     1118
     1119        for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++)
     1120            VMMR0ThreadCtxHooksRelease(&pVM->aCpus[idCpu]);
    11131121
    11141122        SUPR0ObjRelease(pvObj, pHandle->pSession);
     
    13371345    pVM->aCpus[idCpu].hNativeThreadR0 = pGVM->aCpus[idCpu].hEMT = RTThreadNativeSelf();
    13381346
    1339     return VINF_SUCCESS;
     1347    rc = VMMR0ThreadCtxHooksCreate(&pVM->aCpus[idCpu]);
     1348    return rc;
    13401349}
    13411350
  • trunk/src/VBox/VMM/include/VMMInternal.h

    r46861 r47456  
    418418    R0PTRTYPE(PVMMR0LOGGER)     pR0LoggerR0;
    419419
     420    /** @name Thread-context hooks.
     421     *  @{*/
     422    RTTHREADCTX                 hR0ThreadCtx;
     423    /** @} */
     424
    420425    /** @name Rendezvous
    421426     * @{ */
  • trunk/src/VBox/VMM/include/VMMInternal.mac

    r45097 r47456  
    108108        .pR0LoggerR0            RTR0PTR_RES 1
    109109
     110        .hR0ThreadCtx           RTR0PTR_RES 1
     111
    110112        .fInRendezvous          resb 1
    111113%if HC_ARCH_BITS == 32
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette