VirtualBox

Changeset 20663 in vbox for trunk/src/VBox/VMM/EM.cpp


Ignore:
Timestamp:
Jun 17, 2009 12:47:55 PM (15 years ago)
Author:
vboxsync
Message:

VMM: Added VMMR3EmtRendezvous for getting the attention of all EMTs and run some code on one. Made first use of it in vmR3SetHaltMethodU that is called at the end of VMR3CreateVM.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/EM.cpp

    r20408 r20663  
    33203320    {
    33213321        /*
     3322         * EMT Rendezvous (must be serviced before termination).
     3323         */
     3324        if (VM_FF_ISPENDING(pVM, VM_FF_EMT_RENDEZVOUS))
     3325            VMMR3EmtRendezvousFF(pVM, pVCpu);
     3326
     3327        /*
    33223328         * Termination request.
    33233329         */
     
    33743380
    33753381        /* check that we got them all  */
    3376         AssertCompile(VM_FF_NORMAL_PRIORITY_POST_MASK == (VM_FF_TERMINATE | VM_FF_DBGF | VM_FF_RESET | VM_FF_PGM_NO_MEMORY));
     3382        AssertCompile(VM_FF_NORMAL_PRIORITY_POST_MASK == (VM_FF_TERMINATE | VM_FF_DBGF | VM_FF_RESET | VM_FF_PGM_NO_MEMORY | VM_FF_EMT_RENDEZVOUS));
    33773383        AssertCompile(VMCPU_FF_NORMAL_PRIORITY_POST_MASK == VMCPU_FF_CSAM_SCAN_PAGE);
    33783384    }
     
    33953401        if (VM_FF_IS_PENDING_EXCEPT(pVM, VM_FF_PDM_DMA, VM_FF_PGM_NO_MEMORY))
    33963402            PDMR3DmaRun(pVM);
     3403
     3404        /*
     3405         * EMT Rendezvous (make sure they are handled before the requests).
     3406         */
     3407        if (VM_FF_ISPENDING(pVM, VM_FF_EMT_RENDEZVOUS))
     3408            VMMR3EmtRendezvousFF(pVM, pVCpu);
    33973409
    33983410        /*
     
    34213433
    34223434        /* check that we got them all  */
    3423         AssertCompile(VM_FF_NORMAL_PRIORITY_MASK == (VM_FF_REQUEST | VM_FF_PDM_QUEUES | VM_FF_PDM_DMA | VM_FF_REM_HANDLER_NOTIFY));
     3435        AssertCompile(VM_FF_NORMAL_PRIORITY_MASK == (VM_FF_REQUEST | VM_FF_PDM_QUEUES | VM_FF_PDM_DMA | VM_FF_REM_HANDLER_NOTIFY | VM_FF_EMT_RENDEZVOUS));
    34243436    }
    34253437
     
    35363548
    35373549        /*
     3550         * EMT Rendezvous (must be serviced before termination).
     3551         */
     3552        if (VM_FF_ISPENDING(pVM, VM_FF_EMT_RENDEZVOUS))
     3553            VMMR3EmtRendezvousFF(pVM, pVCpu);
     3554
     3555        /*
    35383556         * Termination request.
    35393557         */
     
    35783596
    35793597        /* check that we got them all  */
    3580         AssertCompile(VM_FF_HIGH_PRIORITY_PRE_MASK == (VM_FF_TM_VIRTUAL_SYNC | VM_FF_DBGF | VM_FF_TERMINATE | VM_FF_DEBUG_SUSPEND | VM_FF_PGM_NEED_HANDY_PAGES | VM_FF_PGM_NO_MEMORY));
     3598        AssertCompile(VM_FF_HIGH_PRIORITY_PRE_MASK == (VM_FF_TM_VIRTUAL_SYNC | VM_FF_DBGF | VM_FF_TERMINATE | VM_FF_DEBUG_SUSPEND | VM_FF_PGM_NEED_HANDY_PAGES | VM_FF_PGM_NO_MEMORY | VM_FF_EMT_RENDEZVOUS));
    35813599        AssertCompile(VMCPU_FF_HIGH_PRIORITY_PRE_MASK == (VMCPU_FF_TIMER | VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC | VMCPU_FF_PGM_SYNC_CR3 | VMCPU_FF_PGM_SYNC_CR3_NON_GLOBAL | VMCPU_FF_SELM_SYNC_TSS | VMCPU_FF_TRPM_SYNC_IDT | VMCPU_FF_SELM_SYNC_GDT | VMCPU_FF_SELM_SYNC_LDT | VMCPU_FF_INHIBIT_INTERRUPTS));
    35823600    }
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