]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Disk/Partition/Dxe/Partition.h
added PPI and Protocol definitions needed by porting modules
[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
42bc7f77
A
18#ifndef _PARTITION_H \r
19#define _PARTITION_H \r
b9575d60 20\r
d8a43975 21//\r
22// Include common header file for this module.\r
23//\r
24#include "CommonHeader.h"\r
25\r
b9575d60
A
26#include <Uefi.h>\r
27#include <Protocol/BlockIo.h>\r
28#include <Guid/Gpt.h>\r
29#include <Protocol/ComponentName.h>\r
30#include <Protocol/DevicePath.h>\r
31#include <Protocol/DriverBinding.h>\r
32#include <Protocol/DiskIo.h>\r
33#include <Library/DebugLib.h>\r
34#include <Library/UefiDriverEntryPoint.h>\r
35#include <Library/BaseLib.h>\r
36#include <Library/UefiLib.h>\r
37#include <Library/BaseMemoryLib.h>\r
38#include <Library/MemoryAllocationLib.h>\r
39#include <Library/UefiBootServicesTableLib.h>\r
40#include <Library/DevicePathLib.h>\r
79840ee1 41\r
79840ee1 42#include <IndustryStandard/Mbr.h>\r
43#include <IndustryStandard/ElTorito.h>\r
44\r
45\r
46//\r
47// Partition private data\r
48//\r
49#define PARTITION_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('P', 'a', 'r', 't')\r
50typedef struct {\r
51 UINT64 Signature;\r
52\r
53 EFI_HANDLE Handle;\r
54 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
55 EFI_BLOCK_IO_PROTOCOL BlockIo;\r
56 EFI_BLOCK_IO_MEDIA Media;\r
57\r
58 EFI_DISK_IO_PROTOCOL *DiskIo;\r
59 EFI_BLOCK_IO_PROTOCOL *ParentBlockIo;\r
60 UINT64 Start;\r
61 UINT64 End;\r
62 UINT32 BlockSize;\r
63\r
64 EFI_GUID *EspGuid;\r
65\r
66} PARTITION_PRIVATE_DATA;\r
67\r
68#define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo, PARTITION_PRIVATE_DATA_SIGNATURE)\r
69\r
70//\r
71// Global Variables\r
72//\r
73extern EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding;\r
74extern EFI_COMPONENT_NAME_PROTOCOL gPartitionComponentName;\r
75\r
76//\r
77// Extract INT32 from char array\r
78//\r
79#define UNPACK_INT32(a) (INT32)( (((UINT8 *) a)[0] << 0) | \\r
80 (((UINT8 *) a)[1] << 8) | \\r
81 (((UINT8 *) a)[2] << 16) | \\r
82 (((UINT8 *) a)[3] << 24) )\r
83\r
84//\r
85// Extract UINT32 from char array\r
86//\r
87#define UNPACK_UINT32(a) (UINT32)( (((UINT8 *) a)[0] << 0) | \\r
88 (((UINT8 *) a)[1] << 8) | \\r
89 (((UINT8 *) a)[2] << 16) | \\r
90 (((UINT8 *) a)[3] << 24) )\r
91\r
92//\r
93// Function Prototypes\r
94//\r
95EFI_STATUS\r
96EFIAPI\r
97PartitionDriverBindingSupported (\r
98 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
99 IN EFI_HANDLE ControllerHandle,\r
100 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
101 );\r
102\r
103EFI_STATUS\r
104EFIAPI\r
105PartitionDriverBindingStart (\r
106 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
107 IN EFI_HANDLE ControllerHandle,\r
108 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
109 );\r
110\r
111EFI_STATUS\r
112EFIAPI\r
113PartitionDriverBindingStop (\r
114 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
115 IN EFI_HANDLE ControllerHandle,\r
116 IN UINTN NumberOfChildren,\r
117 IN EFI_HANDLE *ChildHandleBuffer\r
118 );\r
119\r
120//\r
121// EFI Component Name Functions\r
122//\r
123EFI_STATUS\r
124EFIAPI\r
125PartitionComponentNameGetDriverName (\r
126 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
127 IN CHAR8 *Language,\r
128 OUT CHAR16 **DriverName\r
129 );\r
130\r
131EFI_STATUS\r
132EFIAPI\r
133PartitionComponentNameGetControllerName (\r
134 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
135 IN EFI_HANDLE ControllerHandle,\r
136 IN EFI_HANDLE ChildHandle OPTIONAL,\r
137 IN CHAR8 *Language,\r
138 OUT CHAR16 **ControllerName\r
139 );\r
140\r
141EFI_STATUS\r
142PartitionInstallChildHandle (\r
143 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
144 IN EFI_HANDLE ParentHandle,\r
145 IN EFI_DISK_IO_PROTOCOL *ParentDiskIo,\r
146 IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo,\r
147 IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,\r
148 IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
149 IN UINT64 Start,\r
150 IN UINT64 End,\r
151 IN UINT32 BlockSize,\r
152 IN BOOLEAN InstallEspGuid\r
153 )\r
154;\r
155\r
156EFI_STATUS\r
157PartitionInstallGptChildHandles (\r
158 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
159 IN EFI_HANDLE Handle,\r
160 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
161 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
162 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
163 )\r
164;\r
165\r
166EFI_STATUS\r
167PartitionInstallElToritoChildHandles (\r
168 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
169 IN EFI_HANDLE Handle,\r
170 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
171 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
172 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
173 )\r
174;\r
175\r
176EFI_STATUS\r
177PartitionInstallMbrChildHandles (\r
178 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
179 IN EFI_HANDLE Handle,\r
180 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
181 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
182 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
183 )\r
184;\r
185\r
186typedef\r
187EFI_STATUS\r
188(*PARTITION_DETECT_ROUTINE) (\r
189 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
190 IN EFI_HANDLE Handle,\r
191 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
192 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
193 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
194 );\r
195\r
42bc7f77 196#endif\r