]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/Disk/Partition/Dxe/Partition.h
Initial import.
[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
30\r
31\r
32//\r
33// Partition private data\r
34//\r
35#define PARTITION_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('P', 'a', 'r', 't')\r
36typedef struct {\r
37 UINT64 Signature;\r
38\r
39 EFI_HANDLE Handle;\r
40 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
41 EFI_BLOCK_IO_PROTOCOL BlockIo;\r
42 EFI_BLOCK_IO_MEDIA Media;\r
43\r
44 EFI_DISK_IO_PROTOCOL *DiskIo;\r
45 EFI_BLOCK_IO_PROTOCOL *ParentBlockIo;\r
46 UINT64 Start;\r
47 UINT64 End;\r
48 UINT32 BlockSize;\r
49\r
50 EFI_GUID *EspGuid;\r
51\r
52} PARTITION_PRIVATE_DATA;\r
53\r
54#define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo, PARTITION_PRIVATE_DATA_SIGNATURE)\r
55\r
56//\r
57// Global Variables\r
58//\r
59extern EFI_DRIVER_BINDING_PROTOCOL gPartitionDriverBinding;\r
60extern EFI_COMPONENT_NAME_PROTOCOL gPartitionComponentName;\r
61\r
62//\r
63// Extract INT32 from char array\r
64//\r
65#define UNPACK_INT32(a) (INT32)( (((UINT8 *) a)[0] << 0) | \\r
66 (((UINT8 *) a)[1] << 8) | \\r
67 (((UINT8 *) a)[2] << 16) | \\r
68 (((UINT8 *) a)[3] << 24) )\r
69\r
70//\r
71// Extract UINT32 from char array\r
72//\r
73#define UNPACK_UINT32(a) (UINT32)( (((UINT8 *) a)[0] << 0) | \\r
74 (((UINT8 *) a)[1] << 8) | \\r
75 (((UINT8 *) a)[2] << 16) | \\r
76 (((UINT8 *) a)[3] << 24) )\r
77\r
78EFI_STATUS\r
79PartitionInstallChildHandle (\r
80 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
81 IN EFI_HANDLE ParentHandle,\r
82 IN EFI_DISK_IO_PROTOCOL *ParentDiskIo,\r
83 IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo,\r
84 IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,\r
85 IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
86 IN UINT64 Start,\r
87 IN UINT64 End,\r
88 IN UINT32 BlockSize,\r
89 IN BOOLEAN InstallEspGuid\r
90 )\r
91;\r
92\r
93BOOLEAN\r
94PartitionInstallGptChildHandles (\r
95 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
96 IN EFI_HANDLE Handle,\r
97 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
98 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
99 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
100 )\r
101;\r
102\r
103BOOLEAN\r
104PartitionInstallElToritoChildHandles (\r
105 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
106 IN EFI_HANDLE Handle,\r
107 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
108 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
109 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
110 )\r
111;\r
112\r
113BOOLEAN\r
114PartitionInstallMbrChildHandles (\r
115 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
116 IN EFI_HANDLE Handle,\r
117 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
118 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
119 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
120 )\r
121;\r
122\r
123#endif\r