[FREELDR] Cache INT13h drive data in pcdisk.c (#2097)
authordisean <di.sean@protonmail.com>
Tue, 14 Jan 2020 03:08:53 +0000 (09:08 +0600)
committerHermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
Tue, 14 Jan 2020 03:08:53 +0000 (04:08 +0100)
commit7c93350e05f7105afd6fedc8498d68c9a8841e31
tree643ed0fc4781ca713a81dc1dcb8c69cfa9aa0668
parent11851e1a81d6884beb626b675fae185841bff335
[FREELDR] Cache INT13h drive data in pcdisk.c (#2097)

* [FREELDR] Cache the drive geometry in the PcDiskReadLogicalSectorsCHS()

Speed up the loading time a bit.

* [FREELDR] Generalize the cache to all the geometry data + INT 13h extensions-supported status.

The data structure used is "PC_DISK_DRIVE".

- Adapt the associated functions;
- Make DiskGetExtendedDriveParameters() private to pcdisk.c

- Introduce PcDiskDriveNumberToDrive(), that is similar to the XBOX
  function XboxDiskDriveNumberToDeviceUnit(), that retrieves a valid
  pointer to the cached disk corresponding to the given BIOS DriveNumber.
  If needed the cached data gets initialized.

- Make XboxDiskDriveNumberToDeviceUnit() simpler by just returning the
  pointer to the corresponding drive, of NULL if there is none.

Co-authored-by: Hermès BÉLUSCA - MAÏTO <hermes.belusca-maito@reactos.org>
boot/freeldr/freeldr/arch/i386/hwdisk.c
boot/freeldr/freeldr/arch/i386/machpc.c
boot/freeldr/freeldr/arch/i386/pcdisk.c
boot/freeldr/freeldr/arch/i386/xboxdisk.c
boot/freeldr/freeldr/include/arch/pc/machpc.h