3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 Partition driver that produces logical BlockIo devices from a physical
19 BlockIo device. The logical BlockIo devices are based on the format
20 of the raw block devices media. Currently "El Torito CD-ROM", Legacy
21 MBR, and GPT partition schemes are supported.
27 #ifndef __PARTITION_H__
28 #define __PARTITION_H__
30 #include <IndustryStandard/Mbr.h>
31 #include <IndustryStandard/ElTorito.h>
32 #include <IndustryStandard/EfiGpt.h>
35 // Partition private data
37 #define PARTITION_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('P', 'a', 'r', 't')
42 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
43 EFI_BLOCK_IO_PROTOCOL BlockIo
;
44 EFI_BLOCK_IO_MEDIA Media
;
46 EFI_DISK_IO_PROTOCOL
*DiskIo
;
47 EFI_BLOCK_IO_PROTOCOL
*ParentBlockIo
;
54 } PARTITION_PRIVATE_DATA
;
56 #define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo, PARTITION_PRIVATE_DATA_SIGNATURE)
61 extern EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding
;
62 extern EFI_COMPONENT_NAME_PROTOCOL gPartitionComponentName
;
65 // Extract INT32 from char array
67 #define UNPACK_INT32(a) (INT32)( (((UINT8 *) a)[0] << 0) | \
68 (((UINT8 *) a)[1] << 8) | \
69 (((UINT8 *) a)[2] << 16) | \
70 (((UINT8 *) a)[3] << 24) )
73 // Extract UINT32 from char array
75 #define UNPACK_UINT32(a) (UINT32)( (((UINT8 *) a)[0] << 0) | \
76 (((UINT8 *) a)[1] << 8) | \
77 (((UINT8 *) a)[2] << 16) | \
78 (((UINT8 *) a)[3] << 24) )
81 PartitionInstallChildHandle (
82 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
83 IN EFI_HANDLE ParentHandle
,
84 IN EFI_DISK_IO_PROTOCOL
*ParentDiskIo
,
85 IN EFI_BLOCK_IO_PROTOCOL
*ParentBlockIo
,
86 IN EFI_DEVICE_PATH_PROTOCOL
*ParentDevicePath
,
87 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePathNode
,
91 IN BOOLEAN InstallEspGuid
96 PartitionInstallGptChildHandles (
97 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
99 IN EFI_DISK_IO_PROTOCOL
*DiskIo
,
100 IN EFI_BLOCK_IO_PROTOCOL
*BlockIo
,
101 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePath
106 PartitionInstallElToritoChildHandles (
107 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
108 IN EFI_HANDLE Handle
,
109 IN EFI_DISK_IO_PROTOCOL
*DiskIo
,
110 IN EFI_BLOCK_IO_PROTOCOL
*BlockIo
,
111 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePath
116 PartitionInstallMbrChildHandles (
117 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
118 IN EFI_HANDLE Handle
,
119 IN EFI_DISK_IO_PROTOCOL
*DiskIo
,
120 IN EFI_BLOCK_IO_PROTOCOL
*BlockIo
,
121 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePath
127 (*PARTITION_DETECT_ROUTINE
) (
128 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
129 IN EFI_HANDLE Handle
,
130 IN EFI_DISK_IO_PROTOCOL
*DiskIo
,
131 IN EFI_BLOCK_IO_PROTOCOL
*BlockIo
,
132 IN EFI_DEVICE_PATH_PROTOCOL
*DevicePath