mirror of https://github.com/acidanthera/audk.git
Code scrub for DiskIo, Partition & Unicode Collation
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5519 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
ab76200c05
commit
ff61847ddc
|
@ -32,7 +32,10 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gDiskIoComponentName2
|
||||||
"en"
|
"en"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Driver name table for DiskIo module.
|
||||||
|
// It is shared by the implementation of ComponentName & ComponentName2 Protocol.
|
||||||
|
//
|
||||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mDiskIoDriverNameTable[] = {
|
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mDiskIoDriverNameTable[] = {
|
||||||
{
|
{
|
||||||
"eng;en",
|
"eng;en",
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/** @file
|
/** @file
|
||||||
DiskIo driver that layers it's self on every Block IO protocol in the system.
|
DiskIo driver that lays on every BlockIo protocol in the system.
|
||||||
DiskIo converts a block oriented device to a byte oriented device.
|
DiskIo converts a block oriented device to a byte oriented device.
|
||||||
|
|
||||||
ReadDisk may have to do reads that are not aligned on sector boundaries.
|
Disk access may have to handle unaligned request about sector boundaries.
|
||||||
There are three cases:
|
There are three cases:
|
||||||
UnderRun - The first byte is not on a sector boundary or the read request is
|
UnderRun - The first byte is not on a sector boundary or the read request is
|
||||||
less than a sector in length.
|
less than a sector in length.
|
||||||
|
@ -22,6 +22,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
#include "DiskIo.h"
|
#include "DiskIo.h"
|
||||||
|
|
||||||
|
//
|
||||||
|
// Driver binding protocol implementation for DiskIo driver.
|
||||||
|
//
|
||||||
EFI_DRIVER_BINDING_PROTOCOL gDiskIoDriverBinding = {
|
EFI_DRIVER_BINDING_PROTOCOL gDiskIoDriverBinding = {
|
||||||
DiskIoDriverBindingSupported,
|
DiskIoDriverBindingSupported,
|
||||||
DiskIoDriverBindingStart,
|
DiskIoDriverBindingStart,
|
||||||
|
@ -31,6 +34,10 @@ EFI_DRIVER_BINDING_PROTOCOL gDiskIoDriverBinding = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Template for DiskIo private data structure.
|
||||||
|
// The pointer to BlockIo protocol interface is assigned dynamically.
|
||||||
|
//
|
||||||
DISK_IO_PRIVATE_DATA gDiskIoPrivateDataTemplate = {
|
DISK_IO_PRIVATE_DATA gDiskIoPrivateDataTemplate = {
|
||||||
DISK_IO_PRIVATE_DATA_SIGNATURE,
|
DISK_IO_PRIVATE_DATA_SIGNATURE,
|
||||||
{
|
{
|
||||||
|
@ -459,7 +466,7 @@ Done:
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Read BufferSize bytes from Offset into Buffer.
|
Writes BufferSize bytes from Buffer into Offset.
|
||||||
Writes may require a read modify write to support writes that are not
|
Writes may require a read modify write to support writes that are not
|
||||||
aligned on sector boundaries. There are three cases:
|
aligned on sector boundaries. There are three cases:
|
||||||
UnderRun - The first byte is not on a sector boundary or the write request
|
UnderRun - The first byte is not on a sector boundary or the write request
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
/** @file
|
/** @file
|
||||||
DiskIo driver that layers it's self on every Block IO protocol in the system.
|
Master header file for DiskIo driver. It includes the module private defininitions.
|
||||||
DiskIo converts a block oriented device to a byte oriented device.
|
|
||||||
|
|
||||||
Copyright (c) 2006 - 2008, Intel Corporation. <BR>
|
Copyright (c) 2006 - 2008, Intel Corporation. <BR>
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
|
@ -156,7 +155,7 @@ DiskIoReadDisk (
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Read BufferSize bytes from Offset into Buffer.
|
Writes BufferSize bytes from Buffer into Offset.
|
||||||
Writes may require a read modify write to support writes that are not
|
Writes may require a read modify write to support writes that are not
|
||||||
aligned on sector boundaries. There are three cases:
|
aligned on sector boundaries. There are three cases:
|
||||||
UnderRun - The first byte is not on a sector boundary or the write request
|
UnderRun - The first byte is not on a sector boundary or the write request
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#/** @file
|
#/** @file
|
||||||
#
|
#
|
||||||
# Component description file for DiskIo module.
|
# This module lays DiskIo protocol on every blockIo protocol
|
||||||
|
# to provide byte-oriented access to block media.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2006 - 2008, Intel Corporation. <BR>
|
# Copyright (c) 2006 - 2008, Intel Corporation. <BR>
|
||||||
# All rights reserved. This program and the accompanying materials
|
# All rights reserved. This program and the accompanying materials
|
||||||
|
|
|
@ -32,11 +32,14 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gPartitionComponentNa
|
||||||
"en"
|
"en"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// Driver name table for Partition module.
|
||||||
|
// It is shared by the implementation of ComponentName & ComponentName2 Protocol.
|
||||||
|
//
|
||||||
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPartitionDriverNameTable[] = {
|
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPartitionDriverNameTable[] = {
|
||||||
{
|
{
|
||||||
"eng;en",
|
"eng;en",
|
||||||
(CHAR16 *)L"Partition Driver(MBR/GPT/El Torito)"
|
L"Partition Driver(MBR/GPT/El Torito)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
NULL,
|
NULL,
|
||||||
|
|
|
@ -189,7 +189,7 @@ PartitionInstallGptChildHandles (
|
||||||
EFI_PARTITION_ENTRY *PartEntry;
|
EFI_PARTITION_ENTRY *PartEntry;
|
||||||
EFI_PARTITION_ENTRY_STATUS *PEntryStatus;
|
EFI_PARTITION_ENTRY_STATUS *PEntryStatus;
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
EFI_STATUS GptValid;
|
EFI_STATUS GptValidStatus;
|
||||||
HARDDRIVE_DEVICE_PATH HdDev;
|
HARDDRIVE_DEVICE_PATH HdDev;
|
||||||
|
|
||||||
ProtectiveMbr = NULL;
|
ProtectiveMbr = NULL;
|
||||||
|
@ -204,7 +204,7 @@ PartitionInstallGptChildHandles (
|
||||||
DEBUG ((EFI_D_INFO, " BlockSize : %d \n", BlockSize));
|
DEBUG ((EFI_D_INFO, " BlockSize : %d \n", BlockSize));
|
||||||
DEBUG ((EFI_D_INFO, " LastBlock : %x \n", LastBlock));
|
DEBUG ((EFI_D_INFO, " LastBlock : %x \n", LastBlock));
|
||||||
|
|
||||||
GptValid = EFI_NOT_FOUND;
|
GptValidStatus = EFI_NOT_FOUND;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Allocate a buffer for the Protective MBR
|
// Allocate a buffer for the Protective MBR
|
||||||
|
@ -225,7 +225,7 @@ PartitionInstallGptChildHandles (
|
||||||
ProtectiveMbr
|
ProtectiveMbr
|
||||||
);
|
);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
GptValid = Status;
|
GptValidStatus = Status;
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
@ -247,7 +247,6 @@ PartitionInstallGptChildHandles (
|
||||||
}
|
}
|
||||||
|
|
||||||
BackupHeader = AllocateZeroPool (sizeof (EFI_PARTITION_TABLE_HEADER));
|
BackupHeader = AllocateZeroPool (sizeof (EFI_PARTITION_TABLE_HEADER));
|
||||||
|
|
||||||
if (BackupHeader == NULL) {
|
if (BackupHeader == NULL) {
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
@ -304,8 +303,8 @@ PartitionInstallGptChildHandles (
|
||||||
PartEntry
|
PartEntry
|
||||||
);
|
);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
GptValid = Status;
|
GptValidStatus = Status;
|
||||||
DEBUG ((EFI_D_INFO, " Partition Entry ReadBlocks error\n"));
|
DEBUG ((EFI_D_ERROR, " Partition Entry ReadBlocks error\n"));
|
||||||
goto Done;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,7 +326,7 @@ PartitionInstallGptChildHandles (
|
||||||
//
|
//
|
||||||
// If we got this far the GPT layout of the disk is valid and we should return true
|
// If we got this far the GPT layout of the disk is valid and we should return true
|
||||||
//
|
//
|
||||||
GptValid = EFI_SUCCESS;
|
GptValidStatus = EFI_SUCCESS;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Create child device handles
|
// Create child device handles
|
||||||
|
@ -355,12 +354,12 @@ PartitionInstallGptChildHandles (
|
||||||
HdDev.PartitionSize = PartEntry[Index].EndingLBA - PartEntry[Index].StartingLBA + 1;
|
HdDev.PartitionSize = PartEntry[Index].EndingLBA - PartEntry[Index].StartingLBA + 1;
|
||||||
CopyMem (HdDev.Signature, &PartEntry[Index].UniquePartitionGUID, sizeof (EFI_GUID));
|
CopyMem (HdDev.Signature, &PartEntry[Index].UniquePartitionGUID, sizeof (EFI_GUID));
|
||||||
|
|
||||||
DEBUG ((EFI_D_INFO, " Index : %d\n", Index));
|
DEBUG ((EFI_D_INFO, " Index : %d\n", (UINT32) Index));
|
||||||
DEBUG ((EFI_D_INFO, " Start LBA : %x\n", HdDev.PartitionStart));
|
DEBUG ((EFI_D_INFO, " Start LBA : %lx\n", (UINT64) HdDev.PartitionStart));
|
||||||
DEBUG ((EFI_D_INFO, " End LBA : %x\n", PartEntry[Index].EndingLBA));
|
DEBUG ((EFI_D_INFO, " End LBA : %lx\n", (UINT64) PartEntry[Index].EndingLBA));
|
||||||
DEBUG ((EFI_D_INFO, " Partition size: %x\n", HdDev.PartitionSize));
|
DEBUG ((EFI_D_INFO, " Partition size: %lx\n", (UINT64) HdDev.PartitionSize));
|
||||||
DEBUG ((EFI_D_INFO, " Start : %x", MultU64x32 (PartEntry[Index].StartingLBA, BlockSize)));
|
DEBUG ((EFI_D_INFO, " Start : %lx", MultU64x32 (PartEntry[Index].StartingLBA, BlockSize)));
|
||||||
DEBUG ((EFI_D_INFO, " End : %x\n", MultU64x32 (PartEntry[Index].EndingLBA, BlockSize)));
|
DEBUG ((EFI_D_INFO, " End : %lx\n", MultU64x32 (PartEntry[Index].EndingLBA, BlockSize)));
|
||||||
|
|
||||||
Status = PartitionInstallChildHandle (
|
Status = PartitionInstallChildHandle (
|
||||||
This,
|
This,
|
||||||
|
@ -395,7 +394,7 @@ Done:
|
||||||
FreePool (PEntryStatus);
|
FreePool (PEntryStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
return GptValid;
|
return GptValidStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -450,7 +449,7 @@ PartitionValidGptTable (
|
||||||
!PartitionCheckCrc (BlockSize, &PartHdr->Header) ||
|
!PartitionCheckCrc (BlockSize, &PartHdr->Header) ||
|
||||||
PartHdr->MyLBA != Lba
|
PartHdr->MyLBA != Lba
|
||||||
) {
|
) {
|
||||||
DEBUG ((EFI_D_INFO, " !Valid efi partition table header\n"));
|
DEBUG ((EFI_D_INFO, "Invalid efi partition table header\n"));
|
||||||
FreePool (PartHdr);
|
FreePool (PartHdr);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -608,7 +607,10 @@ PartitionRestoreGptTable (
|
||||||
|
|
||||||
Done:
|
Done:
|
||||||
FreePool (PartHdr);
|
FreePool (PartHdr);
|
||||||
FreePool (Ptr);
|
|
||||||
|
if (Ptr != NULL) {
|
||||||
|
FreePool (Ptr);
|
||||||
|
}
|
||||||
|
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -34,7 +34,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
@retval FALSE Mbr is not a Valid MBR.
|
@retval FALSE Mbr is not a Valid MBR.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
STATIC
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
PartitionValidMbr (
|
PartitionValidMbr (
|
||||||
IN MASTER_BOOT_RECORD *Mbr,
|
IN MASTER_BOOT_RECORD *Mbr,
|
||||||
|
|
|
@ -19,7 +19,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
#include "Partition.h"
|
#include "Partition.h"
|
||||||
|
|
||||||
//
|
//
|
||||||
// Partition Driver Global Variables
|
// Partition Driver Global Variables.
|
||||||
//
|
//
|
||||||
EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding = {
|
EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding = {
|
||||||
PartitionDriverBindingSupported,
|
PartitionDriverBindingSupported,
|
||||||
|
@ -30,7 +30,9 @@ EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC
|
//
|
||||||
|
// Priortized function list to detect partition table.
|
||||||
|
//
|
||||||
PARTITION_DETECT_ROUTINE mPartitionDetectRoutineTable[] = {
|
PARTITION_DETECT_ROUTINE mPartitionDetectRoutineTable[] = {
|
||||||
PartitionInstallGptChildHandles,
|
PartitionInstallGptChildHandles,
|
||||||
PartitionInstallElToritoChildHandles,
|
PartitionInstallElToritoChildHandles,
|
||||||
|
@ -98,11 +100,11 @@ PartitionDriverBindingSupported (
|
||||||
// Close the I/O Abstraction(s) used to perform the supported test
|
// Close the I/O Abstraction(s) used to perform the supported test
|
||||||
//
|
//
|
||||||
gBS->CloseProtocol (
|
gBS->CloseProtocol (
|
||||||
ControllerHandle,
|
ControllerHandle,
|
||||||
&gEfiDevicePathProtocolGuid,
|
&gEfiDevicePathProtocolGuid,
|
||||||
This->DriverBindingHandle,
|
This->DriverBindingHandle,
|
||||||
ControllerHandle
|
ControllerHandle
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Open the IO Abstraction(s) needed to perform the supported test
|
// Open the IO Abstraction(s) needed to perform the supported test
|
||||||
|
@ -402,7 +404,6 @@ PartitionDriverBindingStop (
|
||||||
not be reset.
|
not be reset.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
STATIC
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PartitionReset (
|
PartitionReset (
|
||||||
|
@ -440,7 +441,6 @@ PartitionReset (
|
||||||
valid for the device.
|
valid for the device.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
STATIC
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PartitionReadBlocks (
|
PartitionReadBlocks (
|
||||||
|
@ -492,7 +492,6 @@ PartitionReadBlocks (
|
||||||
valid for the device.
|
valid for the device.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
STATIC
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PartitionWriteBlocks (
|
PartitionWriteBlocks (
|
||||||
|
@ -535,7 +534,6 @@ PartitionWriteBlocks (
|
||||||
@retval EFI_NO_MEDIA There is no media in the device.
|
@retval EFI_NO_MEDIA There is no media in the device.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
STATIC
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PartitionFlushBlocks (
|
PartitionFlushBlocks (
|
||||||
|
|
|
@ -51,7 +51,7 @@ CHAR8 mOtherChars[] = {
|
||||||
'\0'
|
'\0'
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC EFI_HANDLE mHandle = NULL;
|
EFI_HANDLE mHandle = NULL;
|
||||||
|
|
||||||
//
|
//
|
||||||
// EFI Unicode Collation Protocol supporting ISO 639-2 language code
|
// EFI Unicode Collation Protocol supporting ISO 639-2 language code
|
||||||
|
|
Loading…
Reference in New Issue