]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Disk/PartitionDxe/Partition.h
Add DiskIo2 protocol definition to MdePkg.
[mirror_edk2.git] / MdeModulePkg / Universal / Disk / PartitionDxe / Partition.h
index 9fca9f360ee6ec7a03cbdf013137b99b261cbfe1..06470f689f11f23db894cfd38d8ed5dff0ed9dd8 100644 (file)
@@ -4,7 +4,7 @@
   of the raw block devices media. Currently "El Torito CD-ROM", Legacy \r
   MBR, and GPT partition schemes are supported.\r
 \r
-Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -20,11 +20,13 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include <Uefi.h>\r
 #include <Protocol/BlockIo.h>\r
+#include <Protocol/BlockIo2.h>\r
 #include <Guid/Gpt.h>\r
 #include <Protocol/ComponentName.h>\r
 #include <Protocol/DevicePath.h>\r
 #include <Protocol/DriverBinding.h>\r
 #include <Protocol/DiskIo.h>\r
+#include <Protocol/DiskIo2.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiDriverEntryPoint.h>\r
 #include <Library/BaseLib.h>\r
@@ -48,10 +50,14 @@ typedef struct {
   EFI_HANDLE                Handle;\r
   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
   EFI_BLOCK_IO_PROTOCOL     BlockIo;\r
+  EFI_BLOCK_IO2_PROTOCOL    BlockIo2;\r
   EFI_BLOCK_IO_MEDIA        Media;\r
+  EFI_BLOCK_IO_MEDIA        Media2;//For BlockIO2\r
 \r
   EFI_DISK_IO_PROTOCOL      *DiskIo;\r
+  EFI_DISK_IO2_PROTOCOL     *DiskIo2;\r
   EFI_BLOCK_IO_PROTOCOL     *ParentBlockIo;\r
+  EFI_BLOCK_IO2_PROTOCOL    *ParentBlockIo2;\r
   UINT64                    Start;\r
   UINT64                    End;\r
   UINT32                    BlockSize;\r
@@ -60,7 +66,13 @@ typedef struct {
 \r
 } PARTITION_PRIVATE_DATA;\r
 \r
+typedef struct {\r
+  EFI_DISK_IO2_TOKEN           DiskIo2Token;\r
+  EFI_BLOCK_IO2_TOKEN          *BlockIo2Token;\r
+} PARTITION_ACCESS_TASK;\r
+\r
 #define PARTITION_DEVICE_FROM_BLOCK_IO_THIS(a)  CR (a, PARTITION_PRIVATE_DATA, BlockIo, PARTITION_PRIVATE_DATA_SIGNATURE)\r
+#define PARTITION_DEVICE_FROM_BLOCK_IO2_THIS(a) CR (a, PARTITION_PRIVATE_DATA, BlockIo2, PARTITION_PRIVATE_DATA_SIGNATURE)\r
 \r
 //\r
 // Global Variables\r
@@ -300,19 +312,21 @@ PartitionComponentNameGetControllerName (
   Create a child handle for a logical block device that represents the\r
   bytes Start to End of the Parent Block IO device.\r
 \r
-  @param[in]  This              Protocol instance pointer\r
-  @param[in]  ParentHandle      Parent Handle for new child\r
-  @param[in]  ParentDiskIo      Parent DiskIo interface\r
-  @param[in]  ParentBlockIo     Parent BlockIo interface\r
-  @param[in]  ParentDevicePath  Parent Device Path\r
-  @param[in]  DevicePathNode    Child Device Path node\r
-  @param[in]  Start             Start Block\r
-  @param[in]  End               End Block\r
-  @param[in]  BlockSize         Child block size\r
-  @param[in]  InstallEspGuid    Flag to install EFI System Partition GUID on handle\r
+  @param[in]  This              Protocol instance pointer.\r
+  @param[in]  ParentHandle      Parent Handle for new child.\r
+  @param[in]  ParentDiskIo      Parent DiskIo interface.\r
+  @param[in]  ParentDiskIo2     Parent DiskIo2 interface.\r
+  @param[in]  ParentBlockIo     Parent BlockIo interface.\r
+  @param[in]  ParentBlockIo2    Parent BlockIo2 interface.\r
+  @param[in]  ParentDevicePath  Parent Device Path.\r
+  @param[in]  DevicePathNode    Child Device Path node.\r
+  @param[in]  Start             Start Block.\r
+  @param[in]  End               End Block.\r
+  @param[in]  BlockSize         Child block size.\r
+  @param[in]  InstallEspGuid    Flag to install EFI System Partition GUID on handle.\r
 \r
-  @retval EFI_SUCCESS       A child handle was added\r
-  @retval other             A child handle was not added\r
+  @retval EFI_SUCCESS       A child handle was added.\r
+  @retval other             A child handle was not added.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -320,7 +334,9 @@ PartitionInstallChildHandle (
   IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN  EFI_HANDLE                   ParentHandle,\r
   IN  EFI_DISK_IO_PROTOCOL         *ParentDiskIo,\r
+  IN  EFI_DISK_IO2_PROTOCOL        *ParentDiskIo2,\r
   IN  EFI_BLOCK_IO_PROTOCOL        *ParentBlockIo,\r
+  IN  EFI_BLOCK_IO2_PROTOCOL       *ParentBlockIo2,\r
   IN  EFI_DEVICE_PATH_PROTOCOL     *ParentDevicePath,\r
   IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePathNode,\r
   IN  EFI_LBA                      Start,\r
@@ -332,15 +348,18 @@ PartitionInstallChildHandle (
 /**\r
   Install child handles if the Handle supports GPT partition structure.\r
 \r
-  @param[in]  This       - Calling context.\r
-  @param[in]  Handle     - Parent Handle\r
-  @param[in]  DiskIo     - Parent DiskIo interface\r
-  @param[in]  BlockIo    - Parent BlockIo interface\r
-  @param[in]  DevicePath - Parent Device Path\r
+  @param[in]  This       Calling context.\r
+  @param[in]  Handle     Parent Handle.\r
+  @param[in]  DiskIo     Parent DiskIo interface.\r
+  @param[in]  DiskIo2    Parent DiskIo2 interface.\r
+  @param[in]  BlockIo    Parent BlockIo interface.\r
+  @param[in]  BlockIo2   Parent BlockIo2 interface.\r
+  @param[in]  DevicePath Parent Device Path.\r
 \r
-  @retval EFI_SUCCESS         Valid GPT disk\r
-  @retval EFI_MEDIA_CHANGED   Media changed Detected\r
-  @retval other               Not a valid GPT disk\r
+  @retval EFI_SUCCESS           Valid GPT disk.\r
+  @retval EFI_MEDIA_CHANGED     Media changed Detected.\r
+  @retval EFI_INVALID_PARAMETER If both BlockIo and BlockIo2 are NULL;\r
+  @retval other                 Not a valid GPT disk.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -348,7 +367,9 @@ PartitionInstallGptChildHandles (
   IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN  EFI_HANDLE                   Handle,\r
   IN  EFI_DISK_IO_PROTOCOL         *DiskIo,\r
+  IN  EFI_DISK_IO2_PROTOCOL        *DiskIo2,\r
   IN  EFI_BLOCK_IO_PROTOCOL        *BlockIo,\r
+  IN  EFI_BLOCK_IO2_PROTOCOL       *BlockIo2,\r
   IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePath\r
   );\r
 \r
@@ -356,15 +377,17 @@ PartitionInstallGptChildHandles (
   Install child handles if the Handle supports El Torito format.\r
 \r
   @param[in]  This        Calling context.\r
-  @param[in]  Handle      Parent Handle\r
-  @param[in]  DiskIo      Parent DiskIo interface\r
-  @param[in]  BlockIo     Parent BlockIo interface\r
+  @param[in]  Handle      Parent Handle.\r
+  @param[in]  DiskIo      Parent DiskIo interface.\r
+  @param[in]  DiskIo2     Parent DiskIo2 interface.\r
+  @param[in]  BlockIo     Parent BlockIo interface.\r
+  @param[in]  BlockIo2    Parent BlockIo2 interface.\r
   @param[in]  DevicePath  Parent Device Path\r
 \r
 \r
-  @retval EFI_SUCCESS         Child handle(s) was added\r
-  @retval EFI_MEDIA_CHANGED   Media changed Detected\r
-  @retval other               no child handle was added\r
+  @retval EFI_SUCCESS         Child handle(s) was added.\r
+  @retval EFI_MEDIA_CHANGED   Media changed Detected.\r
+  @retval other               no child handle was added.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -372,18 +395,22 @@ PartitionInstallElToritoChildHandles (
   IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN  EFI_HANDLE                   Handle,\r
   IN  EFI_DISK_IO_PROTOCOL         *DiskIo,\r
+  IN  EFI_DISK_IO2_PROTOCOL        *DiskIo2,\r
   IN  EFI_BLOCK_IO_PROTOCOL        *BlockIo,\r
+  IN  EFI_BLOCK_IO2_PROTOCOL       *BlockIo2,\r
   IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePath\r
   );\r
 \r
 /**\r
   Install child handles if the Handle supports MBR format.\r
 \r
-  @param  This              Calling context.\r
-  @param  Handle            Parent Handle.\r
-  @param  DiskIo            Parent DiskIo interface.\r
-  @param  BlockIo           Parent BlockIo interface.\r
-  @param  DevicePath        Parent Device Path.\r
+  @param[in]  This              Calling context.\r
+  @param[in]  Handle            Parent Handle.\r
+  @param[in]  DiskIo            Parent DiskIo interface.\r
+  @param[in]  DiskIo2           Parent DiskIo2 interface.\r
+  @param[in]  BlockIo           Parent BlockIo interface.\r
+  @param[in]  BlockIo2          Parent BlockIo2 interface.\r
+  @param[in]  DevicePath        Parent Device Path.\r
    \r
   @retval EFI_SUCCESS       A child handle was added.\r
   @retval EFI_MEDIA_CHANGED Media change was detected.\r
@@ -395,7 +422,9 @@ PartitionInstallMbrChildHandles (
   IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN  EFI_HANDLE                   Handle,\r
   IN  EFI_DISK_IO_PROTOCOL         *DiskIo,\r
+  IN  EFI_DISK_IO2_PROTOCOL        *DiskIo2,\r
   IN  EFI_BLOCK_IO_PROTOCOL        *BlockIo,\r
+  IN  EFI_BLOCK_IO2_PROTOCOL       *BlockIo2,\r
   IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePath\r
   );\r
 \r
@@ -405,7 +434,9 @@ EFI_STATUS
   IN  EFI_DRIVER_BINDING_PROTOCOL  *This,\r
   IN  EFI_HANDLE                   Handle,\r
   IN  EFI_DISK_IO_PROTOCOL         *DiskIo,\r
+  IN  EFI_DISK_IO2_PROTOCOL        *DiskIo2,\r
   IN  EFI_BLOCK_IO_PROTOCOL        *BlockIo,\r
+  IN  EFI_BLOCK_IO2_PROTOCOL       *BlockIo2,\r
   IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePath\r
   );\r
 \r