]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/Disk/Partition/Dxe/Partition.h
Fixed bug in partition driver:
[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
80EFI_STATUS\r
81PartitionInstallChildHandle (\r
82 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
83 IN EFI_HANDLE ParentHandle,\r
84 IN EFI_DISK_IO_PROTOCOL *ParentDiskIo,\r
85 IN EFI_BLOCK_IO_PROTOCOL *ParentBlockIo,\r
86 IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,\r
87 IN EFI_DEVICE_PATH_PROTOCOL *DevicePathNode,\r
88 IN UINT64 Start,\r
89 IN UINT64 End,\r
90 IN UINT32 BlockSize,\r
91 IN BOOLEAN InstallEspGuid\r
92 )\r
93;\r
94\r
c7c02fab 95EFI_STATUS\r
878ddf1f 96PartitionInstallGptChildHandles (\r
97 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
98 IN EFI_HANDLE Handle,\r
99 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
100 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
101 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
102 )\r
103;\r
104\r
c7c02fab 105EFI_STATUS\r
878ddf1f 106PartitionInstallElToritoChildHandles (\r
107 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
108 IN EFI_HANDLE Handle,\r
109 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
110 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
111 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
112 )\r
113;\r
114\r
c7c02fab 115EFI_STATUS\r
878ddf1f 116PartitionInstallMbrChildHandles (\r
117 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
118 IN EFI_HANDLE Handle,\r
119 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
120 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
121 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
122 )\r
123;\r
124\r
c7c02fab 125typedef \r
126EFI_STATUS\r
127(*PARTITION_DETECT_ROUTINE) (\r
128 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
129 IN EFI_HANDLE Handle,\r
130 IN EFI_DISK_IO_PROTOCOL *DiskIo,\r
131 IN EFI_BLOCK_IO_PROTOCOL *BlockIo,\r
132 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
133 );\r
134\r
878ddf1f 135#endif\r