]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Disk/Partition/Dxe/Partition.h
pdated code per coding standard. Changed comments, converted all \ to / and removed...
[mirror_edk2.git] / MdeModulePkg / Universal / Disk / Partition / Dxe / Partition.h
CommitLineData
b9575d60 1/** @file\r
79840ee1 2 Partition driver that produces logical BlockIo devices from a physical \r
3 BlockIo device. The logical BlockIo devices are based on the format\r
4 of the raw block devices media. Currently "El Torito CD-ROM", Legacy \r
5 MBR, and GPT partition schemes are supported.\r
6\r
b9575d60
A
7 Copyright (c) 2006 - 2007, Intel Corporation \r
8 All rights reserved. This program and the accompanying materials \r
9 are licensed and made available under the terms and conditions of the BSD License \r
10 which accompanies this distribution. The full text of the license may be found at \r
11 http://opensource.org/licenses/bsd-license.php \r
12\r
13 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
14 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
15\r
16**/\r
17\r
18\r
19#include <Uefi.h>\r
20#include <Protocol/BlockIo.h>\r
21#include <Guid/Gpt.h>\r
22#include <Protocol/ComponentName.h>\r
23#include <Protocol/DevicePath.h>\r
24#include <Protocol/DriverBinding.h>\r
25#include <Protocol/DiskIo.h>\r
26#include <Library/DebugLib.h>\r
27#include <Library/UefiDriverEntryPoint.h>\r
28#include <Library/BaseLib.h>\r
29#include <Library/UefiLib.h>\r
30#include <Library/BaseMemoryLib.h>\r
31#include <Library/MemoryAllocationLib.h>\r
32#include <Library/UefiBootServicesTableLib.h>\r
33#include <Library/DevicePathLib.h>\r
79840ee1 34\r
35//\r
b9575d60 36// Driver Binding Externs\r
79840ee1 37//\r
b9575d60
A
38extern EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding;\r
39extern EFI_COMPONENT_NAME_PROTOCOL gPartitionComponentName;\r
79840ee1 40\r
41#include <IndustryStandard/Mbr.h>\r
42#include <IndustryStandard/ElTorito.h>\r
43\r
44\r
45//\r
46// Partition private data\r
47//\r
48#define PARTITION_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('P', 'a', 'r', 't')\r
49typedef struct {\r
50 UINT64 Signature;\r
51\r
52 EFI_HANDLE Handle;\r
53 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
54 EFI_BLOCK_IO_PROTOCOL BlockIo;\r
55 EFI_BLOCK_IO_MEDIA Media;\r
56\r
57 EFI_DISK_IO_PROTOCOL *DiskIo;\r
58 EFI_BLOCK_IO_PROTOCOL *ParentBlockIo;\r
59 UINT64 Start;\r
60 UINT64 End;\r
61 UINT32 BlockSize;\r
62\r
63 EFI_GUID *EspGuid;\r
64\r
65} PARTITION_PRIVATE_DATA;\r
66\r
67#define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo, PARTITION_PRIVATE_DATA_SIGNATURE)\r
68\r
69//\r
70// Global Variables\r
71//\r
72extern EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding;\r
73extern EFI_COMPONENT_NAME_PROTOCOL gPartitionComponentName;\r
74\r
75//\r
76// Extract INT32 from char array\r
77//\r
78#define UNPACK_INT32(a) (INT32)( (((UINT8 *) a)[0] << 0) | \\r
79 (((UINT8 *) a)[1] << 8) | \\r
80 (((UINT8 *) a)[2] << 16) | \\r
81 (((UINT8 *) a)[3] << 24) )\r
82\r
83//\r
84// Extract UINT32 from char array\r
85//\r
86#define UNPACK_UINT32(a) (UINT32)( (((UINT8 *) a)[0] << 0) | \\r
87 (((UINT8 *) a)[1] << 8) | \\r
88 (((UINT8 *) a)[2] << 16) | \\r
89 (((UINT8 *) a)[3] << 24) )\r
90\r
91//\r
92// Function Prototypes\r
93//\r
94EFI_STATUS\r
95EFIAPI\r
96PartitionDriverBindingSupported (\r
97 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
98 IN EFI_HANDLE ControllerHandle,\r
99 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
100 );\r
101\r
102EFI_STATUS\r
103EFIAPI\r
104PartitionDriverBindingStart (\r
105 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
106 IN EFI_HANDLE ControllerHandle,\r
107 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
108 );\r
109\r
110EFI_STATUS\r
111EFIAPI\r
112PartitionDriverBindingStop (\r
113 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
114 IN EFI_HANDLE ControllerHandle,\r
115 IN UINTN NumberOfChildren,\r
116 IN EFI_HANDLE *ChildHandleBuffer\r
117 );\r
118\r
119//\r
120// EFI Component Name Functions\r
121//\r
122EFI_STATUS\r
123EFIAPI\r
124PartitionComponentNameGetDriverName (\r
125 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
126 IN CHAR8 *Language,\r
127 OUT CHAR16 **DriverName\r
128 );\r
129\r
130EFI_STATUS\r
131EFIAPI\r
132PartitionComponentNameGetControllerName (\r
133 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
134 IN EFI_HANDLE ControllerHandle,\r
135 IN EFI_HANDLE ChildHandle OPTIONAL,\r
136 IN CHAR8 *Language,\r
137 OUT CHAR16 **ControllerName\r
138 );\r
139\r
140EFI_STATUS\r
141PartitionInstallChildHandle (\r
142 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
143 IN EFI_HANDLE ParentHandle,\r
144 IN EFI_DISK_IO_PROTOCOL *ParentDiskIo,\r
145 IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo,\r
146 IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,\r
147 IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
148 IN UINT64 Start,\r
149 IN UINT64 End,\r
150 IN UINT32 BlockSize,\r
151 IN BOOLEAN InstallEspGuid\r
152 )\r
153;\r
154\r
155EFI_STATUS\r
156PartitionInstallGptChildHandles (\r
157 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
158 IN EFI_HANDLE Handle,\r
159 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
160 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
161 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
162 )\r
163;\r
164\r
165EFI_STATUS\r
166PartitionInstallElToritoChildHandles (\r
167 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
168 IN EFI_HANDLE Handle,\r
169 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
170 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
171 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
172 )\r
173;\r
174\r
175EFI_STATUS\r
176PartitionInstallMbrChildHandles (\r
177 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
178 IN EFI_HANDLE Handle,\r
179 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
180 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
181 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
182 )\r
183;\r
184\r
185typedef\r
186EFI_STATUS\r
187(*PARTITION_DETECT_ROUTINE) (\r
188 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
189 IN EFI_HANDLE Handle,\r
190 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
191 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
192 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
193 );\r
194\r