+++ /dev/null
-/** @file\r
- Partition driver that produces logical BlockIo devices from a physical \r
- BlockIo device. The logical BlockIo devices are based on the format\r
- of the raw block devices media. Currently "El Torito CD-ROM", Legacy \r
- MBR, and GPT partition schemes are supported.\r
-\r
- Copyright (c) 2006 - 2007, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-**/\r
-\r
-#ifndef _PARTITION_H \r
-#define _PARTITION_H \r
-\r
-#include <Uefi.h>\r
-#include <Protocol/BlockIo.h>\r
-#include <Guid/Gpt.h>\r
-#include <Protocol/ComponentName.h>\r
-#include <Protocol/DevicePath.h>\r
-#include <Protocol/DriverBinding.h>\r
-#include <Protocol/DiskIo.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/DevicePathLib.h>\r
-\r
-#include <IndustryStandard/Mbr.h>\r
-#include <IndustryStandard/ElTorito.h>\r
-\r
-\r
-//\r
-// Partition private data\r
-//\r
-#define PARTITION_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('P', 'a', 'r', 't')\r
-typedef struct {\r
- UINT64 Signature;\r
-\r
- EFI_HANDLE Handle;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
- EFI_BLOCK_IO_PROTOCOL BlockIo;\r
- EFI_BLOCK_IO_MEDIA Media;\r
-\r
- EFI_DISK_IO_PROTOCOL *DiskIo;\r
- EFI_BLOCK_IO_PROTOCOL *ParentBlockIo;\r
- UINT64 Start;\r
- UINT64 End;\r
- UINT32 BlockSize;\r
-\r
- EFI_GUID *EspGuid;\r
-\r
-} PARTITION_PRIVATE_DATA;\r
-\r
-#define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo, PARTITION_PRIVATE_DATA_SIGNATURE)\r
-\r
-//\r
-// Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gPartitionComponentName;\r
-\r
-//\r
-// Extract INT32 from char array\r
-//\r
-#define UNPACK_INT32(a) (INT32)( (((UINT8 *) a)[0] << 0) | \\r
- (((UINT8 *) a)[1] << 8) | \\r
- (((UINT8 *) a)[2] << 16) | \\r
- (((UINT8 *) a)[3] << 24) )\r
-\r
-//\r
-// Extract UINT32 from char array\r
-//\r
-#define UNPACK_UINT32(a) (UINT32)( (((UINT8 *) a)[0] << 0) | \\r
- (((UINT8 *) a)[1] << 8) | \\r
- (((UINT8 *) a)[2] << 16) | \\r
- (((UINT8 *) a)[3] << 24) )\r
-\r
-//\r
-// Function Prototypes\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-PartitionDriverBindingSupported (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PartitionDriverBindingStart (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PartitionDriverBindingStop (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer\r
- );\r
-\r
-//\r
-// EFI Component Name Functions\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-PartitionComponentNameGetDriverName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **DriverName\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-PartitionComponentNameGetControllerName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE ChildHandle OPTIONAL,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **ControllerName\r
- );\r
-\r
-EFI_STATUS\r
-PartitionInstallChildHandle (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE ParentHandle,\r
- IN EFI_DISK_IO_PROTOCOL *ParentDiskIo,\r
- IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo,\r
- IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
- IN UINT64 Start,\r
- IN UINT64 End,\r
- IN UINT32 BlockSize,\r
- IN BOOLEAN InstallEspGuid\r
- )\r
-;\r
-\r
-EFI_STATUS\r
-PartitionInstallGptChildHandles (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
- IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-;\r
-\r
-EFI_STATUS\r
-PartitionInstallElToritoChildHandles (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
- IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-;\r
-\r
-EFI_STATUS\r
-PartitionInstallMbrChildHandles (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
- IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-;\r
-\r
-typedef\r
-EFI_STATUS\r
-(*PARTITION_DETECT_ROUTINE) (\r
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Handle,\r
- IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
- IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- );\r
-\r
-#endif\r