]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/Hand/Notify.c
Patch from open source community for CryptoPkg to allow it to build for ARM using...
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / Hand / Notify.c
index 67fce28bd2de44d42df92fce92a4164a7ebb37cf..53780f8e6b1d265d2741142daac7660663c017c1 100644 (file)
@@ -1,8 +1,8 @@
 /** @file\r
-  UEFI notify infrastructure\r
+  Support functions for UEFI protocol notification infrastructure.\r
 \r
-Copyright (c) 2006 - 2008, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2006 - 2008, 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
 http://opensource.org/licenses/bsd-license.php\r
@@ -12,7 +12,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 **/\r
 \r
-#include <DxeMain.h>\r
+#include "DxeMain.h"\r
+#include "Handle.h"\r
 \r
 \r
 /**\r
@@ -42,9 +43,9 @@ CoreNotifyProtocolEntry (
 /**\r
   Removes Protocol from the protocol list (but not the handle list).\r
 \r
-  @param  Handle                 The handle to remove protocol on. \r
-  @param  Protocol               GUID of the protocol to be moved \r
-  @param  Interface              The interface of the protocol \r
+  @param  Handle                 The handle to remove protocol on.\r
+  @param  Protocol               GUID of the protocol to be moved\r
+  @param  Interface              The interface of the protocol\r
 \r
   @return Protocol Entry\r
 \r
@@ -92,13 +93,13 @@ CoreRemoveInterfaceFromProtocol (
 /**\r
   Add a new protocol notification record for the request protocol.\r
 \r
-  @param  Protocol               The requested protocol to add the notify \r
-                                 registration \r
-  @param  Event                  The event to signal \r
-  @param  Registration           Returns the registration record \r
+  @param  Protocol               The requested protocol to add the notify\r
+                                 registration\r
+  @param  Event                  The event to signal\r
+  @param  Registration           Returns the registration record\r
 \r
-  @retval EFI_INVALID_PARAMETER  Invalid parameter \r
-  @retval EFI_SUCCESS            Successfully returned the registration record \r
+  @retval EFI_INVALID_PARAMETER  Invalid parameter\r
+  @retval EFI_SUCCESS            Successfully returned the registration record\r
                                  that has been added\r
 \r
 **/\r
@@ -113,7 +114,7 @@ CoreRegisterProtocolNotify (
   PROTOCOL_ENTRY    *ProtEntry;\r
   PROTOCOL_NOTIFY   *ProtNotify;\r
   EFI_STATUS        Status;\r
-  \r
+\r
   if ((Protocol == NULL) || (Event == NULL) || (Registration == NULL))  {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -121,7 +122,7 @@ CoreRegisterProtocolNotify (
   CoreAcquireProtocolLock ();\r
 \r
   ProtNotify = NULL;\r
-  \r
+\r
   //\r
   // Get the protocol entry to add the notification too\r
   //\r
@@ -132,16 +133,16 @@ CoreRegisterProtocolNotify (
     //\r
     // Allocate a new notification record\r
     //\r
-    ProtNotify = CoreAllocateBootServicesPool (sizeof(PROTOCOL_NOTIFY));\r
+    ProtNotify = AllocatePool (sizeof(PROTOCOL_NOTIFY));\r
     if (ProtNotify != NULL) {\r
-      \r
+\r
       ProtNotify->Signature = PROTOCOL_NOTIFY_SIGNATURE;\r
       ProtNotify->Protocol = ProtEntry;\r
       ProtNotify->Event = Event;\r
       //\r
       // start at the begining\r
       //\r
-      ProtNotify->Position = &ProtEntry->Protocols; \r
+      ProtNotify->Position = &ProtEntry->Protocols;\r
 \r
       InsertTailList (&ProtEntry->Notify, &ProtNotify->Link);\r
     }\r
@@ -167,11 +168,11 @@ CoreRegisterProtocolNotify (
 /**\r
   Reinstall a protocol interface on a device handle.  The OldInterface for Protocol is replaced by the NewInterface.\r
 \r
-  @param  UserHandle             Handle on which the interface is to be \r
-                                 reinstalled \r
-  @param  Protocol               The numeric ID of the interface \r
-  @param  OldInterface           A pointer to the old interface \r
-  @param  NewInterface           A pointer to the new interface \r
+  @param  UserHandle             Handle on which the interface is to be\r
+                                 reinstalled\r
+  @param  Protocol               The numeric ID of the interface\r
+  @param  OldInterface           A pointer to the old interface\r
+  @param  NewInterface           A pointer to the new interface\r
 \r
   @retval EFI_SUCCESS            The protocol interface was installed\r
   @retval EFI_NOT_FOUND          The OldInterface on the handle was not found\r
@@ -213,8 +214,8 @@ CoreReinstallProtocolInterface (
   //\r
   Prot = CoreFindProtocolInterface (UserHandle, Protocol, OldInterface);\r
   if (Prot == NULL) {\r
-    CoreReleaseProtocolLock ();\r
-    return EFI_NOT_FOUND;\r
+    Status = EFI_NOT_FOUND;\r
+    goto Done;\r
   }\r
 \r
   //\r
@@ -228,8 +229,7 @@ CoreReinstallProtocolInterface (
     //\r
     // One or more drivers refused to release, so return the error\r
     //\r
-    CoreReleaseProtocolLock ();\r
-    return Status;\r
+    goto Done;\r
   }\r
 \r
   //\r
@@ -238,8 +238,8 @@ CoreReinstallProtocolInterface (
   Prot = CoreRemoveInterfaceFromProtocol (Handle, Protocol, OldInterface);\r
 \r
   if (Prot == NULL) {\r
-    CoreReleaseProtocolLock ();\r
-    return EFI_NOT_FOUND;\r
+    Status = EFI_NOT_FOUND;\r
+    goto Done;\r
   }\r
 \r
   ProtEntry = Prot->Protocol;\r
@@ -265,20 +265,26 @@ CoreReinstallProtocolInterface (
   // Release the lock and connect all drivers to UserHandle\r
   //\r
   CoreReleaseProtocolLock ();\r
-  Status = CoreConnectController (\r
-             UserHandle, \r
-             NULL, \r
-             NULL, \r
-             TRUE\r
-             );\r
+  //\r
+  // Return code is ignored on purpose.\r
+  //\r
+  CoreConnectController (\r
+    UserHandle,\r
+    NULL,\r
+    NULL,\r
+    TRUE\r
+    );\r
   CoreAcquireProtocolLock ();\r
-  \r
+\r
   //\r
   // Notify the notification list for this protocol\r
   //\r
   CoreNotifyProtocolEntry (ProtEntry);\r
 \r
+  Status = EFI_SUCCESS;\r
+\r
+Done:\r
   CoreReleaseProtocolLock ();\r
-  \r
-  return EFI_SUCCESS;\r
+\r
+  return Status;\r
 }\r