]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/DevicePath/Dxe/DevicePath.c
1. Add the fix for the following Bugs:
[mirror_edk2.git] / EdkModulePkg / Universal / DevicePath / Dxe / DevicePath.c
index 78c5defe3a98f239fd1677dfb868233ff4f2e58b..8aff74d64e6391796ab59954495106809ac401b1 100644 (file)
-/*++
-
-Copyright (c) 2006, Intel Corporation                                                         
-All rights reserved. This program and the accompanying materials                          
-are licensed and made available under the terms and conditions of the BSD License         
-which accompanies this distribution.  The full text of the license may be found at        
-http://opensource.org/licenses/bsd-license.php                                            
-                                                                                          
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
-
-Module Name:
-
-  DevicePathDriver.c
-
-Abstract:
-
-  Device Path Driver to produce DevPathUtilities Protocol, DevPathFromText Protocol
-  and DevPathToText Protocol.
-
---*/
-
-#include "DevicePath.h"
-
-DEVICE_PATH_DRIVER_PRIVATE_DATA mPrivateData;
-
-EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid = DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL;
-EFI_GUID mEfiDevicePathMessagingSASGuid             = DEVICE_PATH_MESSAGING_SAS;
-
-EFI_STATUS
-EFIAPI
-DevicePathEntryPoint (
-  IN EFI_HANDLE           ImageHandle,
-  IN EFI_SYSTEM_TABLE     *SystemTable
-  )
-/*++
-
-  Routine Description:
-    Entry point for EFI drivers.
-
-  Arguments:
-   ImageHandle - EFI_HANDLE
-   SystemTable - EFI_SYSTEM_TABLE
-
-  Returns:
-    EFI_SUCCESS
-    others
-
---*/
-{
-  EFI_STATUS  Status;
-
-  mPrivateData.Signature = DEVICE_PATH_DRIVER_SIGNATURE;
-
-  mPrivateData.DevicePathUtilities.GetDevicePathSize         = GetDevicePathSizeProtocolInterface;
-  mPrivateData.DevicePathUtilities.DuplicateDevicePath       = DuplicateDevicePathProtocolInterface;
-  mPrivateData.DevicePathUtilities.AppendDevicePath          = AppendDevicePathProtocolInterface;
-  mPrivateData.DevicePathUtilities.AppendDeviceNode          = AppendDeviceNodeProtocolInterface;
-  mPrivateData.DevicePathUtilities.AppendDevicePathInstance  = AppendDevicePathInstanceProtocolInterface;
-  mPrivateData.DevicePathUtilities.GetNextDevicePathInstance = GetNextDevicePathInstanceProtocolInterface;
-  mPrivateData.DevicePathUtilities.IsDevicePathMultiInstance = IsDevicePathMultiInstanceProtocolInterface;
-  mPrivateData.DevicePathUtilities.CreateDeviceNode          = CreateDeviceNodeProtocolInterface;
-
-  mPrivateData.DevicePathToText.ConvertDeviceNodeToText      = ConvertDeviceNodeToText;
-  mPrivateData.DevicePathToText.ConvertDevicePathToText      = ConvertDevicePathToText;
-
-  mPrivateData.DevicePathFromText.ConvertTextToDeviceNode    = ConvertTextToDeviceNode;
-  mPrivateData.DevicePathFromText.ConvertTextToDevicePath    = ConvertTextToDevicePath;
-
-  mPrivateData.Handle                                        = NULL;
-  
-  Status = gBS->InstallMultipleProtocolInterfaces (
-                  &mPrivateData.Handle,
-                  &gEfiDevicePathUtilitiesProtocolGuid,
-                  &mPrivateData.DevicePathUtilities,
-                  &gEfiDevicePathToTextProtocolGuid,
-                  &mPrivateData.DevicePathToText,
-                  &gEfiDevicePathFromTextProtocolGuid,
-                  &mPrivateData.DevicePathFromText,
-                  NULL
-                  );
-
-  return Status;
-}
+/*++\r
+\r
+Copyright (c) 2006, Intel Corporation                                                         \r
+All rights reserved. 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
+http://opensource.org/licenses/bsd-license.php                                            \r
+                                                                                          \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+Module Name:\r
+\r
+  DevicePathDriver.c\r
+\r
+Abstract:\r
+\r
+  Device Path Driver to produce DevPathUtilities Protocol, DevPathFromText Protocol\r
+  and DevPathToText Protocol.\r
+\r
+--*/\r
+\r
+#include "DevicePath.h"\r
+\r
+EFI_HANDLE  mDevicePathHandle = NULL;\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_UTILITIES_PROTOCOL mDevicePathUtilities = {\r
+  GetDevicePathSizeProtocolInterface,\r
+  DuplicateDevicePathProtocolInterface,\r
+  AppendDevicePathProtocolInterface,\r
+  AppendDeviceNodeProtocolInterface,\r
+  AppendDevicePathInstanceProtocolInterface,\r
+  GetNextDevicePathInstanceProtocolInterface,\r
+  IsDevicePathMultiInstanceProtocolInterface,\r
+  CreateDeviceNodeProtocolInterface\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_TO_TEXT_PROTOCOL   mDevicePathToText = {\r
+  ConvertDeviceNodeToText,\r
+  ConvertDevicePathToText\r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL mDevicePathFromText = {\r
+  ConvertTextToDeviceNode,  \r
+  ConvertTextToDevicePath  \r
+};\r
+\r
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid = DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL;\r
+GLOBAL_REMOVE_IF_UNREFERENCED const EFI_GUID mEfiDevicePathMessagingSASGuid             = DEVICE_PATH_MESSAGING_SAS;\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DevicePathEntryPoint (\r
+  IN EFI_HANDLE           ImageHandle,\r
+  IN EFI_SYSTEM_TABLE     *SystemTable\r
+  )\r
+/*++\r
+\r
+  Routine Description:\r
+    Entry point for EFI drivers.\r
+\r
+  Arguments:\r
+   ImageHandle - EFI_HANDLE\r
+   SystemTable - EFI_SYSTEM_TABLE\r
+\r
+  Returns:\r
+    EFI_SUCCESS\r
+    others\r
+\r
+--*/\r
+{\r
+  EFI_STATUS  Status;\r
\r
+  Status = EFI_UNSUPPORTED;\r
+  if (FeaturePcdGet (PcdDevicePathSupportDevicePathToText)) {\r
+    if (FeaturePcdGet (PcdDevicePathSupportDevicePathFromText)) {\r
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mDevicePathHandle,\r
+                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,\r
+                      &gEfiDevicePathToTextProtocolGuid,    &mDevicePathToText,\r
+                      &gEfiDevicePathFromTextProtocolGuid,  &mDevicePathFromText,\r
+                      NULL\r
+                      );\r
+    } else {\r
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mDevicePathHandle,\r
+                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,\r
+                      &gEfiDevicePathToTextProtocolGuid,    &mDevicePathToText,\r
+                      NULL\r
+                      );\r
+    }\r
+  } else {\r
+    if (FeaturePcdGet (PcdDevicePathSupportDevicePathFromText)) {\r
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mDevicePathHandle,\r
+                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,\r
+                      &gEfiDevicePathFromTextProtocolGuid,  &mDevicePathFromText,\r
+                      NULL\r
+                      );\r
+    } else {\r
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mDevicePathHandle,\r
+                      &gEfiDevicePathUtilitiesProtocolGuid, &mDevicePathUtilities,\r
+                      NULL\r
+                      );\r
+    }\r
+  }\r
+  return Status;\r
+}\r