VirtualBox

Changeset 10410

Show
Ignore:
Timestamp:
07/09/08 14:23:26 (6 months ago)
Author:
vboxsync
Message:

Introduced VM_FF_REM_HANDLER_NOTIFY action flag to replay the handler notifications whenever possible in ring 3. This will
save some unnecessary context switches.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/VBox/vm.h

    r10409 r10410  
    107107#define VM_FF_TO_R3                     RT_BIT_32(28) 
    108108 
     109/** REM needs to be informed about handler changes. */ 
     110#define VM_FF_REM_HANDLER_NOTIFY        RT_BIT_32(29) 
     111 
    109112/** Suspend the VM - debug only. */ 
    110113#define VM_FF_DEBUG_SUSPEND             RT_BIT_32(31) 
     
    125128#define VM_FF_NORMAL_PRIORITY_POST_MASK (VM_FF_TERMINATE | VM_FF_DBGF | VM_FF_RESET | VM_FF_CSAM_SCAN_PAGE) 
    126129/** Normal priority actions. */ 
    127 #define VM_FF_NORMAL_PRIORITY_MASK      (VM_FF_REQUEST | VM_FF_PDM_QUEUES | VM_FF_PDM_DMA
     130#define VM_FF_NORMAL_PRIORITY_MASK      (VM_FF_REQUEST | VM_FF_PDM_QUEUES | VM_FF_PDM_DMA | VM_FF_REM_HANDLER_NOTIFY
    128131/** Flags to check before resuming guest execution. */ 
    129132#define VM_FF_RESUME_GUEST_MASK         (VM_FF_TO_R3) 
  • trunk/src/VBox/VMM/VMMAll/REMAll.cpp

    r10357 r10410  
    102102    pRec->u.PhysicalRegister.cb = cb; 
    103103    pRec->u.PhysicalRegister.fHasHCHandler = fHasHCHandler; 
     104    VM_FF_SET(pVM, VM_FF_REM_HANDLER_NOTIFY); 
    104105} 
    105106 
     
    126127    pRec->u.PhysicalDeregister.fHasHCHandler = fHasHCHandler; 
    127128    pRec->u.PhysicalDeregister.fRestoreAsRAM = fRestoreAsRAM; 
     129    VM_FF_SET(pVM, VM_FF_REM_HANDLER_NOTIFY); 
    128130} 
    129131 
     
    152154    pRec->u.PhysicalModify.fHasHCHandler = fHasHCHandler; 
    153155    pRec->u.PhysicalModify.fRestoreAsRAM = fRestoreAsRAM; 
     156    VM_FF_SET(pVM, VM_FF_REM_HANDLER_NOTIFY); 
    154157} 
    155158 
  • trunk/src/recompiler/VBoxRecompiler.c

    r10408 r10410  
    25022502 
    25032503/** 
    2504  * Replays the invalidated recorded pages. 
    2505  * Called in response to VERR_REM_FLUSHED_PAGES_OVERFLOW from the RAW execution loop. 
     2504 * Replays the handler notification changes 
     2505 * Called in response to VM_FF_REM_HANDLER_NOTIFY from the RAW execution loop. 
    25062506 * 
    25072507 * @param   pVM         VM handle. 
     
    25552555        } 
    25562556    } 
     2557    VM_FF_CLEAR(pVM, VM_FF_REM_HANDLER_NOTIFY); 
    25572558} 
    25582559 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy