VirtualBox

Changeset 84706 in vbox


Ignore:
Timestamp:
Jun 5, 2020 6:11:25 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
138480
Message:

VMM/DBGF: Add DBGFR3GetCpuState() to return the current CPU state as a human readable string

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/dbgf.h

    r84552 r84706  
    932932VMMR3DECL(bool)             DBGFR3CpuIsIn64BitCode(PUVM pUVM, VMCPUID idCpu);
    933933VMMR3DECL(bool)             DBGFR3CpuIsInV86Code(PUVM pUVM, VMCPUID idCpu);
     934VMMR3DECL(const char *)     DBGFR3CpuGetState(PUVM pUVM, VMCPUID idCpu);
    934935#endif
    935936
  • trunk/src/VBox/VMM/VMMR3/DBGFCpu.cpp

    r82968 r84706  
    162162}
    163163
     164
     165/**
     166 * Returns the state of the given CPU as a human readable string.
     167 *
     168 * @returns Pointer to the human readable CPU state string.
     169 * @param   pUVM        The user mode VM handle.
     170 * @param   idCpu       The target CPU ID.
     171 */
     172VMMR3DECL(const char *) DBGFR3CpuGetState(PUVM pUVM, VMCPUID idCpu)
     173{
     174    UVM_ASSERT_VALID_EXT_RETURN(pUVM, NULL);
     175    VM_ASSERT_VALID_EXT_RETURN(pUVM->pVM, NULL);
     176    AssertReturn(idCpu < pUVM->pVM->cCpus, NULL);
     177
     178    PVMCPU pVCpu = VMMGetCpuById(pUVM->pVM, idCpu);
     179    VMCPUSTATE enmCpuState;
     180    ASMAtomicReadSize(&pVCpu->enmState, &enmCpuState);
     181
     182    switch (enmCpuState)
     183    {
     184        case VMCPUSTATE_INVALID:                   return "<INVALID>";
     185        case VMCPUSTATE_STOPPED:                   return "Stopped";
     186        case VMCPUSTATE_STARTED:                   return "Started";
     187        case VMCPUSTATE_STARTED_HM:                return "Started (HM)";
     188        case VMCPUSTATE_STARTED_EXEC:              return "Started (Exec)";
     189        case VMCPUSTATE_STARTED_EXEC_NEM:          return "Started (Exec NEM)";
     190        case VMCPUSTATE_STARTED_EXEC_NEM_WAIT:     return "Started (Exec NEM Wait)";
     191        case VMCPUSTATE_STARTED_EXEC_NEM_CANCELED: return "Started (Exec NEM Canceled)";
     192        case VMCPUSTATE_STARTED_HALTED:            return "Started (Halted)";
     193        case VMCPUSTATE_END:                       return "END";
     194        default:
     195            AssertMsgFailedReturn(("Unknown CPU state %u\n", enmCpuState), "<UNKNOWN>");
     196    }
     197
     198    /* This indicates a compiler bug. */
     199    return NULL;
     200}
     201
  • trunk/src/VBox/VMM/VMMR3/VMMR3.def

    r82968 r84706  
    137137    DBGFR3AsGetConfig
    138138    DBGFR3CpuGetMode
     139    DBGFR3CpuGetState
    139140    DBGFR3AddrFromSelOff
    140141    DBGFR3FlowCreate
Note: See TracChangeset for help on using the changeset viewer.

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