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