740
740
rc = RTCritSectLeave(&pVM->dbgf.s.InfoCritSect);
742
742
rc = VINF_SUCCESS;
744
743
switch (Info.enmType)
746
745
case DBGFINFOTYPE_DEV:
747
746
if (Info.fFlags & DBGFINFO_FLAGS_RUN_ON_EMT)
748
rc = VMR3ReqCallVoid(pVM, VMCPUID_ANY, &pReq, RT_INDEFINITE_WAIT, (PFNRT)Info.u.Dev.pfnHandler, 3, Info.u.Dev.pDevIns, pHlp, pszArgs);
747
rc = VMR3ReqCallVoidWait(pVM, VMCPUID_ANY, (PFNRT)Info.u.Dev.pfnHandler, 3, Info.u.Dev.pDevIns, pHlp, pszArgs);
750
749
Info.u.Dev.pfnHandler(Info.u.Dev.pDevIns, pHlp, pszArgs);
753
752
case DBGFINFOTYPE_DRV:
754
753
if (Info.fFlags & DBGFINFO_FLAGS_RUN_ON_EMT)
755
rc = VMR3ReqCallVoid(pVM, VMCPUID_ANY, &pReq, RT_INDEFINITE_WAIT, (PFNRT)Info.u.Drv.pfnHandler, 3, Info.u.Drv.pDrvIns, pHlp, pszArgs);
754
rc = VMR3ReqCallVoidWait(pVM, VMCPUID_ANY, (PFNRT)Info.u.Drv.pfnHandler, 3, Info.u.Drv.pDrvIns, pHlp, pszArgs);
757
756
Info.u.Drv.pfnHandler(Info.u.Drv.pDrvIns, pHlp, pszArgs);
760
759
case DBGFINFOTYPE_INT:
761
760
if (Info.fFlags & DBGFINFO_FLAGS_RUN_ON_EMT)
762
rc = VMR3ReqCallVoid(pVM, VMCPUID_ANY, &pReq, RT_INDEFINITE_WAIT, (PFNRT)Info.u.Int.pfnHandler, 3, pVM, pHlp, pszArgs);
761
rc = VMR3ReqCallVoidWait(pVM, VMCPUID_ANY, (PFNRT)Info.u.Int.pfnHandler, 3, pVM, pHlp, pszArgs);
764
763
Info.u.Int.pfnHandler(pVM, pHlp, pszArgs);
767
766
case DBGFINFOTYPE_EXT:
768
767
if (Info.fFlags & DBGFINFO_FLAGS_RUN_ON_EMT)
769
rc = VMR3ReqCallVoid(pVM, VMCPUID_ANY, &pReq, RT_INDEFINITE_WAIT, (PFNRT)Info.u.Ext.pfnHandler, 3, Info.u.Ext.pvUser, pHlp, pszArgs);
768
rc = VMR3ReqCallVoidWait(pVM, VMCPUID_ANY, (PFNRT)Info.u.Ext.pfnHandler, 3, Info.u.Ext.pvUser, pHlp, pszArgs);
771
770
Info.u.Ext.pfnHandler(Info.u.Ext.pvUser, pHlp, pszArgs);
882
880
const char *psz = strstr(pszArgs, pInfo->szName);
884
882
&& ( psz == pszArgs
883
|| RT_C_IS_SPACE(psz[-1]))
886
884
&& ( !psz[pInfo->cchName]
887
|| isspace(psz[pInfo->cchName])))
885
|| RT_C_IS_SPACE(psz[pInfo->cchName])))
888
886
pHlp->pfnPrintf(pHlp, "%-16s %s\n",
889
887
pInfo->szName, pInfo->pszDesc);