Changeset 59248 in vbox for trunk/src/VBox/Devices/PC
- Timestamp:
- Jan 4, 2016 2:13:22 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 104877
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/DevPcBios.cpp
r59227 r59248 291 291 * @param pLCHSGeometry Where to return the disk geometry on success 292 292 */ 293 static int biosGuessDiskLCHS(PPDMI BLOCK pBlock, PPDMMEDIAGEOMETRY pLCHSGeometry)293 static int biosGuessDiskLCHS(PPDMIMEDIA pMedia, PPDMMEDIAGEOMETRY pLCHSGeometry) 294 294 { 295 295 uint8_t aMBR[512], *p; … … 297 297 uint32_t iEndHead, iEndSector, cLCHSCylinders, cLCHSHeads, cLCHSSectors; 298 298 299 if (!p Block)299 if (!pMedia) 300 300 return VERR_INVALID_PARAMETER; 301 rc = p Block->pfnReadPcBios(pBlock, 0, aMBR, sizeof(aMBR));301 rc = pMedia->pfnReadPcBios(pMedia, 0, aMBR, sizeof(aMBR)); 302 302 if (RT_FAILURE(rc)) 303 303 return rc; … … 316 316 cLCHSHeads = iEndHead + 1; 317 317 cLCHSSectors = iEndSector; 318 cLCHSCylinders = RT_MIN(1024, p Block->pfnGetSize(pBlock) / (512 * cLCHSHeads * cLCHSSectors));318 cLCHSCylinders = RT_MIN(1024, pMedia->pfnGetSize(pMedia) / (512 * cLCHSHeads * cLCHSSectors)); 319 319 if (cLCHSCylinders >= 1) 320 320 { … … 397 397 * @param pLCHSGeometry Where to store the geometry settings. 398 398 */ 399 static int setLogicalDiskGeometry(PPDMIBASE pBase, PPDMI BLOCKBIOSpHardDisk, PPDMMEDIAGEOMETRY pLCHSGeometry)399 static int setLogicalDiskGeometry(PPDMIBASE pBase, PPDMIMEDIA pHardDisk, PPDMMEDIAGEOMETRY pLCHSGeometry) 400 400 { 401 401 PDMMEDIAGEOMETRY LCHSGeometry; 402 402 int rc = VINF_SUCCESS; 403 403 404 rc = pHardDisk->pfn GetLCHSGeometry(pHardDisk, &LCHSGeometry);404 rc = pHardDisk->pfnBiosGetLCHSGeometry(pHardDisk, &LCHSGeometry); 405 405 if ( rc == VERR_PDM_GEOMETRY_NOT_SET 406 406 || LCHSGeometry.cCylinders == 0 … … 410 410 || LCHSGeometry.cSectors > 63) 411 411 { 412 PPDMIBLOCK pBlock;413 pBlock = PDMIBASE_QUERY_INTERFACE(pBase, PDMIBLOCK);414 412 /* No LCHS geometry, autodetect and set. */ 415 rc = biosGuessDiskLCHS(p Block, &LCHSGeometry);413 rc = biosGuessDiskLCHS(pHardDisk, &LCHSGeometry); 416 414 if (RT_FAILURE(rc)) 417 415 { 418 416 /* Try if PCHS geometry works, otherwise fall back. */ 419 rc = pHardDisk->pfn GetPCHSGeometry(pHardDisk, &LCHSGeometry);417 rc = pHardDisk->pfnBiosGetPCHSGeometry(pHardDisk, &LCHSGeometry); 420 418 } 421 419 if ( RT_FAILURE(rc) … … 427 425 || LCHSGeometry.cSectors > 63) 428 426 { 429 uint64_t cSectors = p Block->pfnGetSize(pBlock) / 512;427 uint64_t cSectors = pHardDisk->pfnGetSize(pHardDisk) / 512; 430 428 if (cSectors / 16 / 63 <= 1024) 431 429 { … … 456 454 457 455 } 458 rc = pHardDisk->pfn SetLCHSGeometry(pHardDisk, &LCHSGeometry);456 rc = pHardDisk->pfnBiosSetLCHSGeometry(pHardDisk, &LCHSGeometry); 459 457 if (rc == VERR_VD_IMAGE_READ_ONLY) 460 458 { … … 483 481 * @param pLCHSGeometry Where to store the geometry settings. 484 482 */ 485 static int getLogicalDiskGeometry(PPDMI BLOCKBIOSpHardDisk, PPDMMEDIAGEOMETRY pLCHSGeometry)483 static int getLogicalDiskGeometry(PPDMIMEDIA pHardDisk, PPDMMEDIAGEOMETRY pLCHSGeometry) 486 484 { 487 485 PDMMEDIAGEOMETRY LCHSGeometry; 488 486 int rc = VINF_SUCCESS; 489 487 490 rc = pHardDisk->pfn GetLCHSGeometry(pHardDisk, &LCHSGeometry);488 rc = pHardDisk->pfnBiosGetLCHSGeometry(pHardDisk, &LCHSGeometry); 491 489 if ( rc == VERR_PDM_GEOMETRY_NOT_SET 492 490 || LCHSGeometry.cCylinders == 0 … … 549 547 unsigned i; 550 548 PUVM pUVM = PDMDevHlpGetUVM(pDevIns); AssertRelease(pUVM); 551 PPDMI BLOCKBIOSapHDs[4] = {0};549 PPDMIMEDIA apHDs[4] = {0}; 552 550 LogFlow(("pcbiosInitComplete:\n")); 553 551 … … 642 640 if (RT_SUCCESS(rc)) 643 641 { 644 PPDMI BLOCKBIOS pFD = PDMIBASE_QUERY_INTERFACE(pBase, PDMIBLOCKBIOS);642 PPDMIMEDIA pFD = PDMIBASE_QUERY_INTERFACE(pBase, PDMIMEDIA); 645 643 if (pFD) 646 644 { … … 649 647 switch (pFD->pfnGetType(pFD)) 650 648 { 651 case PDM BLOCKTYPE_FLOPPY_360: u32 |= 1 << cShift; break;652 case PDM BLOCKTYPE_FLOPPY_1_20: u32 |= 2 << cShift; break;653 case PDM BLOCKTYPE_FLOPPY_720: u32 |= 3 << cShift; break;654 case PDM BLOCKTYPE_FLOPPY_1_44: u32 |= 4 << cShift; break;655 case PDM BLOCKTYPE_FLOPPY_2_88: u32 |= 5 << cShift; break;656 case PDM BLOCKTYPE_FLOPPY_FAKE_15_6: u32 |= 14 << cShift; break;657 case PDM BLOCKTYPE_FLOPPY_FAKE_63_5: u32 |= 15 << cShift; break;649 case PDMMEDIATYPE_FLOPPY_360: u32 |= 1 << cShift; break; 650 case PDMMEDIATYPE_FLOPPY_1_20: u32 |= 2 << cShift; break; 651 case PDMMEDIATYPE_FLOPPY_720: u32 |= 3 << cShift; break; 652 case PDMMEDIATYPE_FLOPPY_1_44: u32 |= 4 << cShift; break; 653 case PDMMEDIATYPE_FLOPPY_2_88: u32 |= 5 << cShift; break; 654 case PDMMEDIATYPE_FLOPPY_FAKE_15_6: u32 |= 14 << cShift; break; 655 case PDMMEDIATYPE_FLOPPY_FAKE_63_5: u32 |= 15 << cShift; break; 658 656 default: AssertFailed(); break; 659 657 } … … 683 681 int rc = PDMR3QueryLun(pUVM, pThis->pszHDDevice, 0, i, &pBase); 684 682 if (RT_SUCCESS(rc)) 685 apHDs[i] = PDMIBASE_QUERY_INTERFACE(pBase, PDMI BLOCKBIOS);683 apHDs[i] = PDMIBASE_QUERY_INTERFACE(pBase, PDMIMEDIA); 686 684 if ( apHDs[i] 687 && ( apHDs[i]->pfnGetType(apHDs[i]) != PDM BLOCKTYPE_HARD_DISK688 || !apHDs[i]->pfn IsVisible(apHDs[i])))685 && ( apHDs[i]->pfnGetType(apHDs[i]) != PDMMEDIATYPE_HARD_DISK 686 || !apHDs[i]->pfnBiosIsVisible(apHDs[i]))) 689 687 apHDs[i] = NULL; 690 688 if (apHDs[i]) … … 744 742 int rc = PDMR3QueryLun(pUVM, pThis->pszSataDevice, 0, pThis->iSataHDLUN[i], &pBase); 745 743 if (RT_SUCCESS(rc)) 746 apHDs[i] = PDMIBASE_QUERY_INTERFACE(pBase, PDMI BLOCKBIOS);744 apHDs[i] = PDMIBASE_QUERY_INTERFACE(pBase, PDMIMEDIA); 747 745 if ( apHDs[i] 748 && ( apHDs[i]->pfnGetType(apHDs[i]) != PDM BLOCKTYPE_HARD_DISK749 || !apHDs[i]->pfn IsVisible(apHDs[i])))746 && ( apHDs[i]->pfnGetType(apHDs[i]) != PDMMEDIATYPE_HARD_DISK 747 || !apHDs[i]->pfnBiosIsVisible(apHDs[i]))) 750 748 apHDs[i] = NULL; 751 749 if (apHDs[i]) … … 798 796 int rc = PDMR3QueryLun(pUVM, pThis->pszScsiDevice, 0, pThis->iScsiHDLUN[i], &pBase); 799 797 if (RT_SUCCESS(rc)) 800 apHDs[i] = PDMIBASE_QUERY_INTERFACE(pBase, PDMI BLOCKBIOS);798 apHDs[i] = PDMIBASE_QUERY_INTERFACE(pBase, PDMIMEDIA); 801 799 if ( apHDs[i] 802 && ( apHDs[i]->pfnGetType(apHDs[i]) != PDM BLOCKTYPE_HARD_DISK803 || !apHDs[i]->pfn IsVisible(apHDs[i])))800 && ( apHDs[i]->pfnGetType(apHDs[i]) != PDMMEDIATYPE_HARD_DISK 801 || !apHDs[i]->pfnBiosIsVisible(apHDs[i]))) 804 802 apHDs[i] = NULL; 805 803 if (apHDs[i])
Note:
See TracChangeset
for help on using the changeset viewer.