- Timestamp:
- Jul 20, 2007 5:40:59 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMM.cpp
r3700 r3753 170 170 static DECLCALLBACK(void) vmmR3YieldEMT(PVM pVM, PTMTIMER pTimer, void *pvUser); 171 171 static int vmmR3ServiceCallHostRequest(PVM pVM); 172 static DECLCALLBACK(void) vmmR3InfoFF(PVM pVM, PCDBGFINFOHLP pHlp, const char *pszArgs); 172 173 173 174 … … 481 482 if (VBOX_SUCCESS(rc)) 482 483 { 484 /* 485 * Debug info. 486 */ 487 DBGFR3InfoRegisterInternal(pVM, "ff", "Displays the current Forced actions Flags.", vmmR3InfoFF); 488 483 489 /* 484 490 * Statistics. … … 2593 2599 } 2594 2600 2601 2602 2603 /** 2604 * Displays the Force action Flags. 2605 * 2606 * @param pVM The VM handle. 2607 * @param pHlp The output helpers. 2608 * @param pszArgs The additional arguments (ignored). 2609 */ 2610 static DECLCALLBACK(void) vmmR3InfoFF(PVM pVM, PCDBGFINFOHLP pHlp, const char *pszArgs) 2611 { 2612 const uint32_t fForcedActions = pVM->fForcedActions; 2613 2614 pHlp->pfnPrintf(pHlp, "Forced action Flags: %#RX32", fForcedActions); 2615 2616 /* show the flag mnemonics */ 2617 int c = 0; 2618 uint32_t f = fForcedActions; 2619 #define PRINT_FLAG(flag) do { \ 2620 if (f & (flag)) \ 2621 { \ 2622 static const char *s_psz = #flag; \ 2623 if (!(c % 6)) \ 2624 pHlp->pfnPrintf(pHlp, "%s\n %s", c ? "," : "", s_psz + 6); \ 2625 else \ 2626 pHlp->pfnPrintf(pHlp, ", %s", s_psz + 6); \ 2627 c++; \ 2628 f &= ~(flag); \ 2629 } \ 2630 } while (0) 2631 PRINT_FLAG(VM_FF_INTERRUPT_APIC); 2632 PRINT_FLAG(VM_FF_INTERRUPT_PIC); 2633 PRINT_FLAG(VM_FF_TIMER); 2634 PRINT_FLAG(VM_FF_PDM_QUEUES); 2635 PRINT_FLAG(VM_FF_PDM_DMA); 2636 PRINT_FLAG(VM_FF_PDM_CRITSECT); 2637 PRINT_FLAG(VM_FF_DBGF); 2638 PRINT_FLAG(VM_FF_REQUEST); 2639 PRINT_FLAG(VM_FF_TERMINATE); 2640 PRINT_FLAG(VM_FF_RESET); 2641 PRINT_FLAG(VM_FF_PGM_SYNC_CR3); 2642 PRINT_FLAG(VM_FF_PGM_SYNC_CR3_NON_GLOBAL); 2643 PRINT_FLAG(VM_FF_TRPM_SYNC_IDT); 2644 PRINT_FLAG(VM_FF_SELM_SYNC_TSS); 2645 PRINT_FLAG(VM_FF_SELM_SYNC_GDT); 2646 PRINT_FLAG(VM_FF_SELM_SYNC_LDT); 2647 PRINT_FLAG(VM_FF_INHIBIT_INTERRUPTS); 2648 PRINT_FLAG(VM_FF_CSAM_SCAN_PAGE); 2649 PRINT_FLAG(VM_FF_CSAM_PENDING_ACTION); 2650 PRINT_FLAG(VM_FF_TO_R3); 2651 PRINT_FLAG(VM_FF_DEBUG_SUSPEND); 2652 if (f) 2653 pHlp->pfnPrintf(pHlp, "%s\n Unknown bits: %#RX32\n", c ? "," : "", f); 2654 else 2655 pHlp->pfnPrintf(pHlp, "\n"); 2656 #undef PRINT_FLAG 2657 2658 /* the groups */ 2659 c = 0; 2660 #define PRINT_GROUP(grp) do { \ 2661 if (fForcedActions & (grp)) \ 2662 { \ 2663 static const char *s_psz = #grp; \ 2664 if (!(c % 5)) \ 2665 pHlp->pfnPrintf(pHlp, "%s %s", c ? ",\n" : "Groups:\n", s_psz + 6); \ 2666 else \ 2667 pHlp->pfnPrintf(pHlp, ", %s", s_psz + 6); \ 2668 c++; \ 2669 } \ 2670 } while (0) 2671 PRINT_GROUP(VM_FF_EXTERNAL_SUSPENDED_MASK); 2672 PRINT_GROUP(VM_FF_EXTERNAL_HALTED_MASK); 2673 PRINT_GROUP(VM_FF_HIGH_PRIORITY_PRE_MASK); 2674 PRINT_GROUP(VM_FF_HIGH_PRIORITY_PRE_RAW_MASK); 2675 PRINT_GROUP(VM_FF_HIGH_PRIORITY_POST_MASK); 2676 PRINT_GROUP(VM_FF_NORMAL_PRIORITY_POST_MASK); 2677 PRINT_GROUP(VM_FF_NORMAL_PRIORITY_MASK); 2678 PRINT_GROUP(VM_FF_RESUME_GUEST_MASK); 2679 PRINT_GROUP(VM_FF_ALL_BUT_RAW_MASK); 2680 if (c) 2681 pHlp->pfnPrintf(pHlp, "\n"); 2682 #undef PRINT_GROUP 2683 } 2684
Note:
See TracChangeset
for help on using the changeset viewer.