Changeset 40767 in vbox for trunk/src/VBox/HostServices
- Timestamp:
- Apr 5, 2012 9:47:33 AM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 77263
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/GuestProperties/service.cpp
r40633 r40767 52 52 #include <iprt/thread.h> 53 53 #include <iprt/time.h> 54 #include <VBox/vmm/dbgf.h> 54 55 55 56 #include <memory> /* for auto_ptr */ … … 359 360 return VINF_SUCCESS; 360 361 } 362 361 363 private: 362 364 static DECLCALLBACK(int) reqThreadFn(RTTHREAD ThreadSelf, void *pvUser); … … 383 385 int hostCall(uint32_t eFunction, uint32_t cParms, VBOXHGCMSVCPARM paParms[]); 384 386 int uninit(); 387 void dbgInfoShow(PCDBGFINFOHLP pHlp); 388 static DECLCALLBACK(void) dbgInfo(void *pvUser, PCDBGFINFOHLP pHlp, const char *pszArgs); 385 389 }; 386 390 … … 1252 1256 } 1253 1257 1258 /** 1259 * Enumeration data shared between dbgInfoCallback and Service::dbgInfoShow. 1260 */ 1261 typedef struct ENUMDBGINFO 1262 { 1263 PCDBGFINFOHLP pHlp; 1264 } ENUMDBGINFO; 1265 1266 static 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 1284 void 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 */ 1297 void Service::dbgInfo(void *pvUser, PCDBGFINFOHLP pHlp, const char *pszArgs) 1298 { 1299 SELF *pSelf = reinterpret_cast<SELF *>(pvUser); 1300 pSelf->dbgInfoShow(pHlp); 1301 } 1302 1254 1303 1255 1304 /** … … 1317 1366 else 1318 1367 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; 1319 1375 break; 1320 1376
Note:
See TracChangeset
for help on using the changeset viewer.