VirtualBox

Changeset 40767 in vbox for trunk/src/VBox/HostServices


Ignore:
Timestamp:
Apr 5, 2012 9:47:33 AM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
77263
Message:

also enumerate guest properties during guru meditation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/GuestProperties/service.cpp

    r40633 r40767  
    5252#include <iprt/thread.h>
    5353#include <iprt/time.h>
     54#include <VBox/vmm/dbgf.h>
    5455
    5556#include <memory>  /* for auto_ptr */
     
    359360        return VINF_SUCCESS;
    360361    }
     362
    361363private:
    362364    static DECLCALLBACK(int) reqThreadFn(RTTHREAD ThreadSelf, void *pvUser);
     
    383385    int hostCall(uint32_t eFunction, uint32_t cParms, VBOXHGCMSVCPARM paParms[]);
    384386    int uninit();
     387    void dbgInfoShow(PCDBGFINFOHLP pHlp);
     388    static DECLCALLBACK(void) dbgInfo(void *pvUser, PCDBGFINFOHLP pHlp, const char *pszArgs);
    385389};
    386390
     
    12521256}
    12531257
     1258/**
     1259 * Enumeration data shared between dbgInfoCallback and Service::dbgInfoShow.
     1260 */
     1261typedef struct ENUMDBGINFO
     1262{
     1263    PCDBGFINFOHLP pHlp;
     1264} ENUMDBGINFO;
     1265
     1266static DECLCALLBACK(int) dbgInfoCallback(PRTSTRSPACECORE pStr, void *pvUser)
     1267{
     1268    Property *pProp = (Property *)pStr;
     1269    PCDBGFINFOHLP pHlp = ((ENUMDBGINFO*)pvUser)->pHlp;
     1270
     1271    char szFlags[MAX_FLAGS_LEN];
     1272    int rc = writeFlags(pProp->mFlags, szFlags);
     1273    if (RT_FAILURE(rc))
     1274        RTStrPrintf(szFlags, sizeof(szFlags), "???");
     1275
     1276    pHlp->pfnPrintf(pHlp, "%s: '%s', %RU64",
     1277                    pProp->mName.c_str(), pProp->mValue.c_str(), pProp->mTimestamp);
     1278    if (strlen(szFlags))
     1279        pHlp->pfnPrintf(pHlp, " (%s)", szFlags);
     1280    pHlp->pfnPrintf(pHlp, "\n");
     1281    return 0;
     1282}
     1283
     1284void Service::dbgInfoShow(PCDBGFINFOHLP pHlp)
     1285{
     1286    ENUMDBGINFO EnumData = { pHlp };
     1287    RTStrSpaceEnumerate(&mhProperties, dbgInfoCallback, &EnumData);
     1288}
     1289
     1290/**
     1291 * Handler for debug info.
     1292 *
     1293 * @param   pvUser      user pointer.
     1294 * @param   pHlp        The info helper functions.
     1295 * @param   pszArgs     Arguments, ignored.
     1296 */
     1297void Service::dbgInfo(void *pvUser, PCDBGFINFOHLP pHlp, const char *pszArgs)
     1298{
     1299    SELF *pSelf = reinterpret_cast<SELF *>(pvUser);
     1300    pSelf->dbgInfoShow(pHlp);
     1301}
     1302
    12541303
    12551304/**
     
    13171366                else
    13181367                    rc = VERR_INVALID_PARAMETER;
     1368                break;
     1369
     1370            case GET_DBGF_INFO_FN:
     1371                if (cParms != 2)
     1372                    return VERR_INVALID_PARAMETER;
     1373                paParms[0].u.pointer.addr = (void*)(uintptr_t)dbgInfo;
     1374                paParms[1].u.pointer.addr = (void*)this;
    13191375                break;
    13201376
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