Changeset 91882 in vbox
- Timestamp:
- Oct 20, 2021 11:41:52 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/UsbMsd.cpp
r90791 r91882 1348 1348 { 1349 1349 RT_NOREF(uPass); 1350 PUSBMSD pThis = PDMINS_2_DATA(pUsbIns, PUSBMSD); 1350 PUSBMSD pThis = PDMINS_2_DATA(pUsbIns, PUSBMSD); 1351 PCPDMUSBHLP pHlp = pUsbIns->pHlpR3; 1351 1352 1352 1353 /* config. */ 1353 SSMR3PutBool(pSSM, pThis->Lun0.pIBase != NULL);1354 pHlp->pfnSSMPutBool(pSSM, pThis->Lun0.pIBase != NULL); 1354 1355 return VINF_SSM_DONT_CALL_AGAIN; 1355 1356 } … … 1360 1361 static DECLCALLBACK(int) usbMsdSaveExec(PPDMUSBINS pUsbIns, PSSMHANDLE pSSM) 1361 1362 { 1362 PUSBMSD pThis = PDMINS_2_DATA(pUsbIns, PUSBMSD);1363 int rc;1363 PUSBMSD pThis = PDMINS_2_DATA(pUsbIns, PUSBMSD); 1364 PCPDMUSBHLP pHlp = pUsbIns->pHlpR3; 1364 1365 1365 1366 /* The config */ 1366 rc = usbMsdLiveExec(pUsbIns, pSSM, SSM_PASS_FINAL);1367 int rc = usbMsdLiveExec(pUsbIns, pSSM, SSM_PASS_FINAL); 1367 1368 AssertRCReturn(rc, rc); 1368 1369 1369 SSMR3PutU8(pSSM, pThis->bConfigurationValue);1370 SSMR3PutBool(pSSM, pThis->aEps[0].fHalted);1371 SSMR3PutBool(pSSM, pThis->aEps[1].fHalted);1372 SSMR3PutBool(pSSM, pThis->aEps[2].fHalted);1373 SSMR3PutBool(pSSM, pThis->pReq != NULL);1370 pHlp->pfnSSMPutU8(pSSM, pThis->bConfigurationValue); 1371 pHlp->pfnSSMPutBool(pSSM, pThis->aEps[0].fHalted); 1372 pHlp->pfnSSMPutBool(pSSM, pThis->aEps[1].fHalted); 1373 pHlp->pfnSSMPutBool(pSSM, pThis->aEps[2].fHalted); 1374 pHlp->pfnSSMPutBool(pSSM, pThis->pReq != NULL); 1374 1375 1375 1376 if (pThis->pReq) … … 1377 1378 PUSBMSDREQ pReq = pThis->pReq; 1378 1379 1379 SSMR3PutU32(pSSM, pReq->enmState);1380 SSMR3PutU32(pSSM, pReq->cbBuf);1380 pHlp->pfnSSMPutU32(pSSM, pReq->enmState); 1381 pHlp->pfnSSMPutU32(pSSM, pReq->cbBuf); 1381 1382 if (pReq->cbBuf) 1382 1383 { 1383 1384 AssertPtr(pReq->pbBuf); 1384 SSMR3PutMem(pSSM, pReq->pbBuf, pReq->cbBuf);1385 pHlp->pfnSSMPutMem(pSSM, pReq->pbBuf, pReq->cbBuf); 1385 1386 } 1386 1387 1387 SSMR3PutU32(pSSM, pReq->offBuf);1388 SSMR3PutMem(pSSM, &pReq->Cbw, sizeof(pReq->Cbw));1389 SSMR3PutU8(pSSM, pReq->iScsiReqStatus);1390 } 1391 1392 return SSMR3PutU32(pSSM, UINT32_MAX); /* sanity/terminator */1388 pHlp->pfnSSMPutU32(pSSM, pReq->offBuf); 1389 pHlp->pfnSSMPutMem(pSSM, &pReq->Cbw, sizeof(pReq->Cbw)); 1390 pHlp->pfnSSMPutU8(pSSM, pReq->iScsiReqStatus); 1391 } 1392 1393 return pHlp->pfnSSMPutU32(pSSM, UINT32_MAX); /* sanity/terminator */ 1393 1394 } 1394 1395 … … 1398 1399 static DECLCALLBACK(int) usbMsdLoadExec(PPDMUSBINS pUsbIns, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass) 1399 1400 { 1400 PUSBMSD pThis = PDMINS_2_DATA(pUsbIns, PUSBMSD); 1401 uint32_t u32; 1402 int rc; 1401 PUSBMSD pThis = PDMINS_2_DATA(pUsbIns, PUSBMSD); 1402 PCPDMUSBHLP pHlp = pUsbIns->pHlpR3; 1403 1403 1404 1404 if (uVersion > USB_MSD_SAVED_STATE_VERSION) … … 1407 1407 /* Verify config. */ 1408 1408 bool fInUse; 1409 rc = SSMR3GetBool(pSSM, &fInUse);1409 int rc = pHlp->pfnSSMGetBool(pSSM, &fInUse); 1410 1410 AssertRCReturn(rc, rc); 1411 1411 if (fInUse != (pThis->Lun0.pIBase != NULL)) 1412 return SSMR3SetCfgError(pSSM, RT_SRC_POS,1413 N_("The %s VM is missing a USB mass storage device. Please make sure the source and target VMs have compatible storage configurations"),1414 fInUse ? "target" : "source");1412 return pHlp->pfnSSMSetCfgError(pSSM, RT_SRC_POS, 1413 N_("The %s VM is missing a USB mass storage device. Please make sure the source and target VMs have compatible storage configurations"), 1414 fInUse ? "target" : "source"); 1415 1415 1416 1416 if (uPass == SSM_PASS_FINAL) … … 1419 1419 Assert(!pThis->pReq); 1420 1420 1421 SSMR3GetU8(pSSM, &pThis->bConfigurationValue);1422 SSMR3GetBool(pSSM, &pThis->aEps[0].fHalted);1423 SSMR3GetBool(pSSM, &pThis->aEps[1].fHalted);1424 SSMR3GetBool(pSSM, &pThis->aEps[2].fHalted);1421 pHlp->pfnSSMGetU8(pSSM, &pThis->bConfigurationValue); 1422 pHlp->pfnSSMGetBool(pSSM, &pThis->aEps[0].fHalted); 1423 pHlp->pfnSSMGetBool(pSSM, &pThis->aEps[1].fHalted); 1424 pHlp->pfnSSMGetBool(pSSM, &pThis->aEps[2].fHalted); 1425 1425 bool fReqAlloc = false; 1426 rc = SSMR3GetBool(pSSM, &fReqAlloc);1426 rc = pHlp->pfnSSMGetBool(pSSM, &fReqAlloc); 1427 1427 AssertRCReturn(rc, rc); 1428 1428 if (fReqAlloc) … … 1433 1433 1434 1434 AssertCompile(sizeof(pReq->enmState) == sizeof(uint32_t)); 1435 SSMR3GetU32(pSSM, (uint32_t *)&pReq->enmState);1435 pHlp->pfnSSMGetU32(pSSM, (uint32_t *)&pReq->enmState); 1436 1436 1437 1437 uint32_t cbBuf = 0; 1438 rc = SSMR3GetU32(pSSM, &cbBuf);1438 rc = pHlp->pfnSSMGetU32(pSSM, &cbBuf); 1439 1439 AssertRCReturn(rc, rc); 1440 1440 if (cbBuf) … … 1444 1444 AssertPtr(pReq->pbBuf); 1445 1445 Assert(cbBuf == pReq->cbBuf); 1446 SSMR3GetMem(pSSM, pReq->pbBuf, pReq->cbBuf);1446 pHlp->pfnSSMGetMem(pSSM, pReq->pbBuf, pReq->cbBuf); 1447 1447 } 1448 1448 else … … 1450 1450 } 1451 1451 1452 SSMR3GetU32(pSSM, &pReq->offBuf);1453 SSMR3GetMem(pSSM, &pReq->Cbw, sizeof(pReq->Cbw));1452 pHlp->pfnSSMGetU32(pSSM, &pReq->offBuf); 1453 pHlp->pfnSSMGetMem(pSSM, &pReq->Cbw, sizeof(pReq->Cbw)); 1454 1454 1455 1455 if (uVersion > USB_MSD_SAVED_STATE_VERSION_PRE_CLEANUP) 1456 rc = SSMR3GetU8(pSSM, &pReq->iScsiReqStatus);1456 rc = pHlp->pfnSSMGetU8(pSSM, &pReq->iScsiReqStatus); 1457 1457 else 1458 1458 { … … 1460 1460 1461 1461 /* Skip old fields which are unused now or can be determined from the CBW. */ 1462 SSMR3Skip(pSSM, 4 * 4 + 64);1463 rc = SSMR3GetS32(pSSM, &iScsiReqStatus);1462 pHlp->pfnSSMSkip(pSSM, 4 * 4 + 64); 1463 rc = pHlp->pfnSSMGetS32(pSSM, &iScsiReqStatus); 1464 1464 pReq->iScsiReqStatus = (uint8_t)iScsiReqStatus; 1465 1465 } … … 1467 1467 } 1468 1468 1469 rc = SSMR3GetU32(pSSM, &u32); 1469 uint32_t u32; 1470 rc = pHlp->pfnSSMGetU32(pSSM, &u32); 1470 1471 AssertRCReturn(rc, rc); 1471 1472 AssertMsgReturn(u32 == UINT32_MAX, ("%#x\n", u32), VERR_SSM_DATA_UNIT_FORMAT_CHANGED); … … 2255 2256 RT_NOREF(pCfgGlobal); 2256 2257 PDMUSB_CHECK_VERSIONS_RETURN(pUsbIns); 2257 PUSBMSD pThis = PDMINS_2_DATA(pUsbIns, PUSBMSD); 2258 PUSBMSD pThis = PDMINS_2_DATA(pUsbIns, PUSBMSD); 2259 PCPDMUSBHLP pHlp = pUsbIns->pHlpR3; 2260 2258 2261 Log(("usbMsdConstruct/#%u:\n", iInstance)); 2259 2262 … … 2288 2291 * Validate and read the configuration. 2289 2292 */ 2290 rc = CFGMR3ValidateConfig(pCfg, "/", "", "", "UsbMsd", iInstance);2293 rc = pHlp->pfnCFGMValidateConfig(pCfg, "/", "", "", "UsbMsd", iInstance); 2291 2294 if (RT_FAILURE(rc)) 2292 2295 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.